Hi. Ich will eine Datei Zeilenweise einlesen und dann vor jeder Zeile ein '#' schreiben, also die Zeilen auskommentieren.
Wie kann ich denn vorne was dranhaengen? Habe das bis jetzt nur hinten dran bekommen (mit f = file('blah.txt' , 'a') )
Ansonsten habe ich das Problem das wenn ich die Datei einlese, dann etwas reinschreibe alles andere geloescht ist ...
Braechte da wohl mal Rat!
mfg flow
nur eine Datei einlesen ...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
zweite datei erstellen, auskommentierete (#) zeilen einfügen, erste datei anhängen, erste löschen, zweite verschieben so dass sie dir erste ersetzt. Dieser ansatz ist nicht so schön.
Aber gibt es nicht auch eine seek funktion? Damit liese sich doch sicher etwas machen.
Aber gibt es nicht auch eine seek funktion? Damit liese sich doch sicher etwas machen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ja mit seek() habe ich auch mal rumprobiert. War sogar meine erster Ansatz. Wollte eine Zeile einlesen und dann mit seek() an die erste Stelle wechseln und dort dann ein # schreiben. Das hatte sogar funktioniert aber ich wusste nicht wie ich dann zur naechsten Zeile wechsele.
Ich muss dazu sagen, dass ich heute das erste Mal mit Python zu tun habe.
Wenn ich eine Datei mit read() einlese, liest er doch alles ein, also vom Anfang der Datei bis zum Ende, oder? Das sollte ja dann fuer mich nicht viel nuetzen.
Ich habe readline() benutzt. Dann liest er ja eine Zeile ein. Aber wie durchlaufe ich dann die naechsten Zeilen? Dachte an eine For-Schleife? So in der Art " for i in f : " Er soll damit alle Zeilen mit readline() nacheinander einlesen und jeweils nachdem er eine Zeile eingelesen hat ein # vorsetzen. Das wird so vermutlich aber nicht funktionieren ...
Ich habe seek() auch noch nicht ganz verstanden. Sollte wohl so funktionieren :
seek( offset [ , whence] ) ... was ist offset? Und whence kann 0, 1 oder 2 sein ?
Ich will auch niemanden auffordern mir kompletten Code zu geben Will das selber hinbekommen, sonst bin ich frustriert * aber momentan sieht es noch ein wenig duester aus.
Also wie muss so eine FOr-Schleife aussehen? (wenn ueberhaupt eine sinnvoll ist ...)
mfg flow
Ich muss dazu sagen, dass ich heute das erste Mal mit Python zu tun habe.
Wenn ich eine Datei mit read() einlese, liest er doch alles ein, also vom Anfang der Datei bis zum Ende, oder? Das sollte ja dann fuer mich nicht viel nuetzen.
Ich habe readline() benutzt. Dann liest er ja eine Zeile ein. Aber wie durchlaufe ich dann die naechsten Zeilen? Dachte an eine For-Schleife? So in der Art " for i in f : " Er soll damit alle Zeilen mit readline() nacheinander einlesen und jeweils nachdem er eine Zeile eingelesen hat ein # vorsetzen. Das wird so vermutlich aber nicht funktionieren ...
Ich habe seek() auch noch nicht ganz verstanden. Sollte wohl so funktionieren :
seek( offset [ , whence] ) ... was ist offset? Und whence kann 0, 1 oder 2 sein ?
Ich will auch niemanden auffordern mir kompletten Code zu geben Will das selber hinbekommen, sonst bin ich frustriert * aber momentan sieht es noch ein wenig duester aus.
Also wie muss so eine FOr-Schleife aussehen? (wenn ueberhaupt eine sinnvoll ist ...)
mfg flow
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi flow,
Python2.3 vorausgesetzt:
Du könntest auch vorher die "datei.txt" umbenennen und nachher löschen.
Gruß
Dookie
Python2.3 vorausgesetzt:
Code: Alles auswählen
infile = file("datei.txt","r")
outfile = file("datei_neu.txt","w")
for zeile in infile:
outfile.write("#"+zeile)
outfile.close()
infile.close()
Gruß
Dookie
Du kannst auch alles in den Speicher lesen und dann was schreiben:
Mit w+ öffnest du Dateien im Updatemodus.
Code: Alles auswählen
f=open('datei.txt','w+')
lines=f.readlines()
f.seek(0)
for line in lines:
f.write('#'+line)
f.close()