Kann keine Dateien schreiben

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
gtuk
User
Beiträge: 4
Registriert: Donnerstag 15. Juli 2010, 20:58

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.
Benutzeravatar
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

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()
gtuk
User
Beiträge: 4
Registriert: Donnerstag 15. Juli 2010, 20:58

ok. ich verstehs zwar nicht, aber es funktioniert bestens. und das ist vorerst mein anliegen.
ich danke dir!
Benutzeravatar
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.
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

gtuk hat geschrieben:ok. ich verstehs zwar nicht, aber es funktioniert bestens.
1. Dateien müssen nach der Bearbeitung geschlossen werden. In deinem Code fehlte das close() nach dem Schreiben.
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.
Antworten