IO_Error unter Windows

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
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hallo,

ich habe gerade einem bekannten geholfen ein Pythonscript zu erstellen. Dabei kam eine sehr seltsame Fehlermeldung alledings nur bei Ihm unter Windows in folgender Funktion:

Code: Alles auswählen

def write_Headerfile(name, lines):
    f = open(savepath+name, "w")
    for line in lines:
        f.write(inverse_str4s(line))
    f.close()
dabei kommt "IO_Error: io_operation on closed File" oder so ähnlich, nachdem alle Zeilen geschrieben wurden.

Auf Verdacht haben wir es mit folgender Änderung versucht:

Code: Alles auswählen

def write_Headerfile(name, lines):
    f = open(savepath+name, "w")
    for line in lines:
        if line: f.write(inverse_str4s(line))
    f.close()
so funktioniert das Ganze auch unter Windows ohne Fehlermeldung.

Die Zeilen werden vorher mit readlines() aus einer Datei gelesen, und die Funktion inverse_str4s modifiziert beim Finden von bestimmten Inhalten diese Inhalte, hat also auch nichts mit Ein/Ausgabe zu tun.

Hat vielleicht irgendwer eine Erklährung oder ist das ein winspezifisches Problem?


Gruß

Dookie
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Hallo!
Dookie hat geschrieben:

Code: Alles auswählen

def write_Headerfile(name, lines):
    f = open(savepath+name, "w")
    for line in lines:
        f.write(inverse_str4s(line))
    f.close()
dabei kommt "IO_Error: io_operation on closed File" oder so ähnlich, nachdem alle Zeilen geschrieben wurden.
Vieleicht hilft ein flush() vor'm close(). Mache ich zumindest immer.

Jan
RicmanX
User
Beiträge: 69
Registriert: Donnerstag 29. August 2002, 17:10
Wohnort: Erfurt
Kontaktdaten:

Ich denk mal das liegt an der anderen Funktion.

Du schreibst etwas direkt von ner Funktionsausgabe in ne Datei, unter Python2.2 sind (glücklicherweise wie ich finde) Lokale und Globale Sachen nicht so sehr getrennt, dadurch passiert's wahrscheinlich das beide Dateien geschlossen werden mit dem close() in der anderen Funktion. Falls du da die File Variable auch mit f betitelt hast wärs garnicht mehr verwunderlich.

Für die andere Funktion ginge event. um diesen Fehler zu umgehen ebenfalls:

Code: Alles auswählen

in = open("auslesen.txt", "r").readlines()
Das öffnet, führt aus und schließt sofort.

Ric
Antworten