Hallo liebe Leute..
Ich machs kurz: ich bin offensichtlich zu blöde, ein "Programm" zu schreiben, dass als Ergebnis eine Datei mit Inhalt liefert.
Ein einfaches Beispiel:
f = open ('test.txt', 'w')
f.write('das ist nur ein test')
f=open('test.txt', 'r')
f.read()
f.close()
wenn ich diese anweisungen als einfaches programm schreibe, passiert rein gar nichts. auch keine fehlermeldung.
wenn ich diese befehle jedoch einzeln in der shell eingebe, geschieht das gewünschte.
kann mir mal einer sagen, was das für nen unterschied macht? Ich fühl mich so langsam echt in einer Sackgasse..
achso: ich nutze python 2.6.5, falls das relevant ist.
und wo ich gerade hier rein schreibe: Wie bekomme ich denn den Ort heraus, an dem diese geschriebenen, neu erstellten Dateien gespeichert werden?
danke schonmal für die geistige erleuchtung.
Kann keine Dateien schreiben
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Du solltest dateien eben schliessen, wenn du fertig bist. Und den Rueckgabewert von `f.read()` benutzen.
Oder noch besser `with` verwenden
Oder noch besser `with` verwenden
Code: Alles auswählen
with open("test.txt", "w") as f:
f.write("das ist nur ein test")
with open("test.txt", "r") as f:
print f.read()
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Es ist nunmal so, dass es keine Garantie gibt, dass die Dateien "geschrieben" werden, bevor der entsprechende Filehandle geschlossen wird. Dein Problem duerfte aber eher gewesen sein, dass du `f.read()` falsch benutzt hast.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
1. Dateien müssen nach der Bearbeitung geschlossen werden. In deinem Code fehlte das close() nach dem Schreiben.gtuk hat geschrieben:ok. ich verstehs zwar nicht, aber es funktioniert bestens.
2. Das Verständnis des with-Statement ist für einen Anfänger tatsächlich nicht ganz einfach. Ich beschränke mich daher hier auf die Verwendung im Kontext von open(), die du im Beispiel von cofi findest. Wenn der eingerückte zum with-Statement gehörende Block verlassen wird, dann wird die Datei automatisch geschlossen. Das von mir in Punkt 1 erwähnte explizite close() ist damit nicht mehr erforderlich.