Seite 1 von 1
Dateiendung an file anhängen
Verfasst: Montag 17. Juli 2017, 09:36
von Ede1994
Hallo.
Ich habe folgendes Problem...
Ich habe eine txt-Datei mit vielen Einträgen in der Form:
111
222
333
.
.
.
n
Nun möchte ich an jede Datei aus dieser Liste eine Endung anhängen. Dafür habe ich folgenden Code geschrieben:
Code: Alles auswählen
fobj_in = open("ahi_g20.txt")
fobj_out = open("ahi_g20_2.txt","w")
b = '.eeg'
for line in fobj_in:
print line.rstrip()
fobj_out.write(line + b)
fobj_in.close()
fobj_out.close()
Diese Ausgabe sieht dann wie folgt aus:
111
eeg.222
eeg.333
.
.
.
n
.eeg
Das '.eeg' wird also immer erst nach dem Zeilenumbruch eingefügt. Warum? Kann mir bitte jemand helfen?
Re: Dateiendung an file anhängen
Verfasst: Montag 17. Juli 2017, 09:57
von Sirius3
@Ede1994: jede Zeile enthält ein Zeile-Ende-Zeichen. Du hängst nach dem Zeileendezeichen noch etwas an, was dann natürlich erst in der nächsten Zeile auftaucht. In Deiner print-Zeile entfernst Du ja schon das Zeile-Ende-Zeichen, Dir ist also bewußt, dass es das gibt.
Re: Dateiendung an file anhängen
Verfasst: Montag 17. Juli 2017, 10:06
von Ede1994
Ja das war mir bewusst. Mir ist bzw. war klar warum die Endung verschoben ist, aber ich habe jetzt ein bisschen probiert und konnte den Zeilenumsprung nicht vermeiden. Mir fehlt der richtige Befehl oder vllt auch der richtige Gedanke...
Re: Dateiendung an file anhängen
Verfasst: Montag 17. Juli 2017, 10:15
von BlackJack
@Ede1994: Du hattest doch schon den richtigen Gedanken: Den Zeilenumbruch entfernen. Nur halt nicht nur bei der Ausgabe sondern auch bevor Du die Dateiendung anhängst.
Re: Dateiendung an file anhängen
Verfasst: Montag 17. Juli 2017, 10:27
von Ede1994
Ja, hatte ich so probiert:
[codebox=python file=Unbenannt.txt]
fobj_in = open("ahi_g20.txt")
fobj_out = open("ahi_g20_2.txt","w")
b = '.eeg'
for line in fobj_in:
line.replace('\n', '')
fobj_out.write(line + b)
fobj_in.close()
fobj_out.close()
[/code]
Ging aber nicht!

Re: Dateiendung an file anhängen
Verfasst: Montag 17. Juli 2017, 10:32
von __deets__
Lies dir mal die Dokumentation der von dir verwendeten Methode "replace" durch, und es wird dir ein

aufgehen.
Re: Dateiendung an file anhängen
Verfasst: Montag 17. Juli 2017, 10:44
von Ede1994
Okay. Also ich denke replace habe ich verstanden, habe mal das probiert:
[codebox=python file=Unbenannt.txt]
fobj_in = open("ahi_g20.txt")
fobj_out = open("ahi_g20_2.txt","w")
for line in fobj_in:
fobj_out.write(line.replace('\n', '.eeg'))
fobj_in.close()
fobj_out.close()
[/code]
Das Ergebnis bleibt jedoch das gleiche.
Re: Dateiendung an file anhängen
Verfasst: Montag 17. Juli 2017, 10:52
von Ede1994
Okay. ich hab es jetzt...eine kleiner dummer Fehler
Lösung:
[codebox=python file=Unbenannt.txt]
fobj_in = open("ahi_g20.txt").readlines()
fobj_out = open("ahi_g20_2.txt","w")
print fobj_in
for line in fobj_in:
fobj_out.write(line.replace('\r', '.eeg'))
#fobj_in.close()
fobj_out.close()
[/code]
DANKE für eure Hilfe!!!!!
Re: Dateiendung an file anhängen
Verfasst: Montag 17. Juli 2017, 12:07
von Sirius3
@Ede1994: nein! Das ist keine Lösung. Eigentlich dürfte ein \r in den Zeilen gar nicht auftauchen, außer Du versuchst eine unter Windows geschriebene Datei mit Linux zu verarbeiten. replace macht prinzipiell etwas anderes als das was Du willst. Der Name fobj_in ist zudem verwirrend und falsch.
Code: Alles auswählen
suffix = ".egg"
with open("ahi_g20.txt") as fobj_in:
with open("ahi_g20_2.txt","w") as fobj_out:
for line in fobj_in:
line = line.rstrip()
fobj_out.write("{}{}\n".format(line, suffix))