Datei lesen und löschen unter Windwos

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
koetom
User
Beiträge: 5
Registriert: Freitag 3. Februar 2012, 07:38

Hallo zusammen,

ich verwende CPython auf einem Win XP.
Jetzt möchte ich in einem Programm eine Datei öffnen auslesen und anschließend löschen.
Obwohl ich die Datei nach dem lesen mit f.close() zu gemacht habe bekomme ich beim Löschen die Fehlermeldung das die Datei von einem anderen Prozess benutzt wird. Anscheinend steht sich hier mein Skript selber im Weg, denn sonst wird auf die Datei nicht zugegriffen.

Weiß jemand Rat ?

Gruß,

Tom
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wie wäre es, wenn Du uns mal den Code zeigst inkl. der exakten Fehlermeldung? Wir können hier nicht hellsehen...

Zudem sollte man Dateien immer so öffnen:

Code: Alles auswählen

with open(...) as handler:
    # handler ist heir File-Objekt
    # handler wird automatisch geschlossen
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
koetom
User
Beiträge: 5
Registriert: Freitag 3. Februar 2012, 07:38

Hallo nochmal,

also jetzt hab ich das mit with gemacht und so funktioniert es. Jetzt würde mich nur noch interessieren wieso das vorherige nicht funktioniert hat:

Code: Alles auswählen

....
daten=open(datei,"r")
for line in daten:
   print(line)
daten.close()
os.remove(datei)
....
Die Fehlermeldung die da kam lautete: "Windows Error 32 Process can not access file because it is beeing used by another process"

Danke,

Tom
BlackJack

@koetom: Bei *dem* Quelltext sollte das Problem nicht bestehen.
koetom
User
Beiträge: 5
Registriert: Freitag 3. Februar 2012, 07:38

Hm, tut es aber. Ich hab es extra nochmal probiert. Was ich auch gemerkt habe, wenn ich in ein Dateiobjekt was schreibe wird das auch nicht direkt nach .close() geschrieben. Die Datei ist zwar vorhanden hat aber 0 Byte. Erst wenn das Skript komplett durch gelaufen ist und beendet wurde werden die Daten in die Datei geschrieben. Komisch komisch.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

koetom hat geschrieben:Hm, tut es aber. Ich hab es extra nochmal probiert. Was ich auch gemerkt habe, wenn ich in ein Dateiobjekt was schreibe wird das auch nicht direkt nach .close() geschrieben
Du hast auch ganz sicher close() im Code stehen und nicht nur close?
BlackJack

@koetom: Dann wurde die Datei nicht geschlossen. Das sind a) sehr grundlegende Operationen und b) nicht wirklich Python-spezifisch. Das `close()` wird ja nur an die entsprechende C-Funktion weiter gereicht.
Antworten