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
Datei lesen und löschen unter Windwos
- 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:
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
assert encoding_kapiert
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:
Die Fehlermeldung die da kam lautete: "Windows Error 32 Process can not access file because it is beeing used by another process"
Danke,
Tom
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)
....
Danke,
Tom
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.
Du hast auch ganz sicher close() im Code stehen und nicht nur close?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
@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.