Ziffern in Zeile hinzufügen

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
Kahnbein.Kai
User
Beiträge: 104
Registriert: Mittwoch 24. Juni 2015, 14:12
Wohnort: Bochum

@ cofi,
ja es klappt.
Ich habe ein paar Fragen dazu

Code: Alles auswählen

    import os # was ist import os ? 
    with open("test.txt", "r") as in_, open("test.new", "w") as out:
        for line in in_:
            out.write("32" + line)
     
    os.rename("test.new", "test.txt")
Ist meins komplett falsch, oder geht es so auch ?

Gruß Kai
Kahnbein.Kai
User
Beiträge: 104
Registriert: Mittwoch 24. Juni 2015, 14:12
Wohnort: Bochum

Ich bekomme es selber einfach nicht hin.

Code: Alles auswählen

datei=open("test.txt","r")
for zeile in datei:
        print("32"+zeile)
        dateia=open("test-bearbeitet.txt","w")
        dateia.write(zeile)
datei.close()
dateia.close()
input()
test.txt beinhaltet zum Testen folgende Werte

30000
30003
30000
00000
03000
03003

diese werden im DOS Fenster auch in

3230000
3230003
3230000
3200000
3203000
3203003

umgewandelt. In die Datei test-bearbeitet.ext schreibt Python aber nur

03003
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Schau mal wie oft "test-bearbeitet.txt" geoeffnet wird.

`os` ist ein Modul der Standardbibliothek; Python hat eine Dokumentation: https://docs.python.org/2/library/os.html
Du kannst es natuerlich auch ohne `with` machen, aber so wird garantiert, dass die Dateien auch wieder geschlossen werden.

Und: Lass das `input()` am Ende weg und starte es aus der Konsole. Sonst wirst du im Fehlerfall keine Meldung sehen.
Kahnbein.Kai
User
Beiträge: 104
Registriert: Mittwoch 24. Juni 2015, 14:12
Wohnort: Bochum

ah ok,
Ich glaube ich habe es auch nach vielem rumprobieren.

Code: Alles auswählen

datei=open("test.txt","r")
dateia=open("test-bearbeitet.txt","w")
for zeile in datei:
       print("32"+zeile)
       dateia.write("32"+zeile)
datei.close()
dateia.close()
Jetzt werden beide Dateien richtig ausgegeben.
Ist das von Ihnen "besser" Programmiert, muss bei meiner Lösung zwei mal die 32 hinzugefügt werden ?
In der Vorlesung ist hinter beim

Code: Alles auswählen

dateia.write("32"+zeile,file=datei)
angehängt, leider ist keine Erklärung dabei was das file= bringt.

Danke für eure Hilfe ! Ich werde mich bestimmt nochmal melden :)

Schönen Abend noch !
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

In der Vorlesung steht bestimmt nicht `dateia.write(..., file=datei)`, sondern viel eher `print(..., file=datei)` und macht damit (fast) das gleiche wie dein `file.write` Aufruf. Dokumentation dazu: https://docs.python.org/3/library/functions.html#print
Antworten