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 :idea: 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 :D
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))