nur eine Datei einlesen ...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
flow

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
Leonidas
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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
flow

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
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi flow,

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()
Du könntest auch vorher die "datei.txt" umbenennen und nachher löschen.

Gruß

Dookie
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Du kannst auch alles in den Speicher lesen und dann was schreiben:

Code: Alles auswählen

f=open('datei.txt','w+')
lines=f.readlines()
f.seek(0)
for line in lines:
    f.write('#'+line)
f.close()
Mit w+ öffnest du Dateien im Updatemodus.
flow

ja danke hat alles geklappt! ;)

mfg flow
Antworten