Hi,
ich gebe in einem Python-Programm eine Datei aus. Dabei muss jede Zeile nummeriert werden. Momentan mache ich das während dem Schreiben, indem ich nach jeder Zeile einen Zähler erhöhe.
Der Uebersichtlichkeit des Programmes würde es gut tun, wenn ich die Dateien ohne Zeilennummern schreiben würde, und nachträglich die Datei nochmals lese und die Zeilennummern einfüge.
Ist das eine gute oder schlechte Idee? Geschwindigkeit ist nicht so wichtig, aber wenns blöd ist mach ichs nicht :-)
Danke
-
25.06.2012, 10:13 #1Lt. Junior Grade
- Dabei seit
- Dez 2010
- Beiträge
- 266
Frage zur Dateiausgabe / Zeilennummerierung?
- Anzeige
Logge dich ein, um diese Anzeige nicht zu sehen. -
25.06.2012, 10:32 #2Cadet 3rd Year
- Dabei seit
- Feb 2009
- Beiträge
- 58
AW: Frage zur Dateiausgabe / Zeilennummerierung?
was ganz simpel wär:
cat -n datei > datei
-
25.06.2012, 10:41 #3Lt. Junior Grade
Ersteller dieses Themas
- Dabei seit
- Dez 2010
- Beiträge
- 266
AW: Frage zur Dateiausgabe / Zeilennummerierung?
Hi
cat -n? Ich finde grad nichts dazu auf die Schnelle, hast du vielleicht einen Link für mich?
Ich muss in Fünfer oder -Zehnerblöcken nummerieren.
Danke
-
25.06.2012, 11:42 #4Cadet 3rd Year
- Dabei seit
- Feb 2009
- Beiträge
- 58
AW: Frage zur Dateiausgabe / Zeilennummerierung?
Dazu musst du dir dann http://getgnuwin32.sourceforge.net/ runterladen (da du wohl Windows benutzt)
In welchem Package sich cat befindet weiß ich nicht, warscheinlich aber CoreUtils.
cat -n macht nichts anderes als die angegeben Datei auszugeben und die Zeilen zu numerieren.
Wenn du aber nur 5er und 10er Blöcke willst musst du aber noch zusätzlich Filtern.
Warscheinlich wirds wohl einfacher sein wenn du bereits zur erstellung deiner Datei die Zeilennummer vorne hinzufügtst.Geändert von beig1 (25.06.2012 um 11:45 Uhr)
-
25.06.2012, 12:49 #5
-
25.06.2012, 13:23 #6Lt. Junior Grade
Ersteller dieses Themas
- Dabei seit
- Dez 2010
- Beiträge
- 266
AW: Frage zur Dateiausgabe / Zeilennummerierung?
ich brauche halt an jeder Stelle wo eine Zeile geschrieben wird eine zusätzliche Zeile um den Zähler zu erhöhenUnd so unübersichtlich kann dein Programm ja gar nicht sein mit nur einen Zähler davor schreiben; wenn doch, dann machst du irgendwas falsch.
if (tralala):
Schreib dies und das
Zähler+=10
elif (tralala):
Schreib dies und das
Zähler+=10
else (tralala):
Schreib dies und das
Zähler+=10
Grüsse
-
25.06.2012, 13:35 #7
AW: Frage zur Dateiausgabe / Zeilennummerierung?
Nein, brauchst du eben nicht.
Bei jedem Schreibvorgang wird ja logischerweise die Zeile um 1 erhöht, also kannst du die Erhöhung vor die If-else stellen oder danach (je nach Aufbau und Vorliebe)
Wenn du noch Abzweigungen hast, wo der Zeile nicht erhöht werden muss oder soll (warum auch immer), dann kannst du es auch anders verpacken. Hier wieder nach Vorlieben und Aufbau sortieren.Code [php]:zeile+=10 if (tralala): Schreib dies und das elif (tralala): Schreib dies und das else (tralala): Schreib dies und das
Code [php]:if (tralala): Schreib dies und das mit Zeile elif (tralala): Schreib dies und das mit Zeile else (tralala): Schreib dies und das mit Zeile else (blubb): Schreib dies und das OHNE Zeile if(tralala) or (tralala) or (tralala): zeile+=10;
Geändert von DasBoeseLebt (25.06.2012 um 13:39 Uhr)
-
25.06.2012, 15:10 #8Lt. Junior Grade
Ersteller dieses Themas
- Dabei seit
- Dez 2010
- Beiträge
- 266
AW: Frage zur Dateiausgabe / Zeilennummerierung?
Danke für deine Tipps
ich steh gerade leider etwas auf dem Schlauch.
Mein Beispiel oben war auch schlecht, denn es würde demnach ja nur eine der Bedingungen zutreffem und eine Zeile geschrieben. In dem Fall müsste natürlich auch nur einmal pro Schleife der Zähler erhöht werden.Tatsächlich füge ich an vielen Stellen Zeilen nur ein, wenn ein bestimmter Fall eintrifft:
wenn der Fall nicht zutrifft wird der Zähler auch nicht erhöht.Code [php]:writeline counter+=10 if(a>b): writeline counter+=10 if(c>d): writeline counter+=10 writeline counter+=10
Am Ende kommt z.b. noch ein Block zum Abschluss der Datei, ca. 10 Zeilen. Da muss ich ja auch erst schauen wo der Zähler nun steht und dann die Nummern vor jede Zeile schreiben.
Grüsse
-
25.06.2012, 15:36 #9
AW: Frage zur Dateiausgabe / Zeilennummerierung?
Ich weiß nicht, ob ich das jetzt so richtig verstehe, aber normal fügt man doch nicht willkürlichen Zeilennummer ein, sondern in 5er, 10er, ...etc Schritten.
Demnach kannst du da simpel mit Modulo arbeiten?
Und eigentlich ändert sich da nichts groß dran, den du erhöhst dann einfach immer noch pro writeline die Variable zeile um 1.Code [php]:if(zeile % 10 == 0): // 10Zeilen Abstand // Schreibe Zeile + Text else: // Schreibe Text // ODER if(zeile % 5 == 0): // 5Zeilen Abstand // Schreibe Zeile + Text else: // Schreibe Text
Ansonsten musst du es mal wirklich richtig erklären oder ich bin zu blöd
Geändert von DasBoeseLebt (25.06.2012 um 15:44 Uhr) Grund: 2== und nicht 1=... was ist heute nur los :D
-
25.06.2012, 17:03 #10Lt. Junior Grade
Ersteller dieses Themas
- Dabei seit
- Dez 2010
- Beiträge
- 266
AW: Frage zur Dateiausgabe / Zeilennummerierung?
also das Programm geht letztendlich an eine Maschine. Diese liest die Befehle Zeile für Zeile. Jede Zeile muss dabei mit "N" und einer Nummer beginnen. (N1, N2, N3). In der Datei darf keine Nummer zweimal vorkommen und man inkrementiert üblicherweise in 5er oder Zehnerschritten um nachträglich auch manuell noch Zwischenzeilen einfügen zu können.(N10,N20,N30)
-
25.06.2012, 17:44 #11Lt. Junior Grade
- Dabei seit
- Aug 2011
- Beiträge
- 423
AW: Frage zur Dateiausgabe / Zeilennummerierung?
Hört sich schwer nach Basic an ^^ Wenn du eh vom Programm durchnumerieren lässt, brauchst du eigentlich auch keine Zahlen frei zu lassen. Wenn du mittendrin was ändern willst kannst dus ja ändern und mit dem Programm neu durchnumerieren ^^ Ansonsten würd ic hbei jeder zeile die ich einfüge einfach nen Counter um eins hochzählen und counter*5 als Zahl vor die zeile schreiben, so verschwendeste zwar zeilen aber who cares?
-
25.06.2012, 17:47 #12Lieutenant
- Dabei seit
- Jan 2011
- Beiträge
- 763
AW: Frage zur Dateiausgabe / Zeilennummerierung?
Also so etwas:
Ist jetzt nicht 100% Python aber die Idee ist klar?Code:function int writeNumberedLine(int zeile, String text) { writeLine("N" + zeile + "text"); return zeile + 10; } ... int zeile = 10; zeile = writeNumberedLine(zeile, "blala"); zeile = writeNumberedLine(zeile, "blubb");"I shall build a table, a round table, so that everyone can look each other in the eye.
And I shall be elevated above you, in a rocket chair, a magnificent rocket chair,
so I can look down on all of you and see just how equal we all are." ~ Nostalgia Critic, Kickassia
-
26.06.2012, 08:41 #13Lt. Junior Grade
Ersteller dieses Themas
- Dabei seit
- Dez 2010
- Beiträge
- 266
AW: Frage zur Dateiausgabe / Zeilennummerierung?
es geht um Programme nach DIN66025 wenn es euch interessiertHört sich schwer nach Basic an ^^
genau so mache ich es im Moment.Wenn du eh vom Programm durchnumerieren lässt, brauchst du eigentlich auch keine Zahlen frei zu lassen. Wenn du mittendrin was ändern willst kannst dus ja ändern und mit dem Programm neu durchnumerieren ^^ Ansonsten würd ic hbei jeder zeile die ich einfüge einfach nen Counter um eins hochzählen und counter*5 als Zahl vor die zeile schreiben, so verschwendeste zwar zeilen aber who cares?
Ja, das schaut gut aus. Ich dachte mir das auch schon so, denn es gibt eine Hauptfunktion, welche den Grossteil der Zeilen schreibt. Dort könnte ich einen Counter integrieren und somit einige Zeilen sparenIst jetzt nicht 100% Python aber die Idee ist klar?

Zitieren
