Ich schreibe gerade ein kleines Skript zur Verwendung auf einem unserer Server mit Python. Auf dem Server ist nur Python 2.4.4 installiert.
Ich habe Python erst mit 2.5 verwendet, daher bin ich an das folgende Formular gewöhnt:
with open('file.txt', 'r') as f:
# do stuff with f
Es gibt jedoch keine with
Anweisung vor 2.5, und ich habe Probleme, Beispiele für die ordnungsgemäße manuelle Bereinigung eines Dateiobjekts zu finden.
Was ist die beste Vorgehensweise zum sicheren Entsorgen von Dateiobjekten bei Verwendung alter Python-Versionen?
open
fehlschlägt, wird eine Ausnahme ausgelöst, bevor dertry/finally
Block überhaupt eingegeben wird. Alsoclose
wird nicht gerufen. (Deshalb sollten Sieopen
vor dem anrufentry
.)open
einer Ausnahme hinzugefügt .In der obigen Lösung hier wiederholt:
Wenn nach dem erfolgreichen Öffnen der Datei und vor dem Versuch etwas Schlimmes passiert (Sie wissen es nie ...), wird die Datei nicht geschlossen. Eine sicherere Lösung ist daher:
quelle
with open(...)
ist definitiv die beste Wahl in modernem Python.Sie müssen die Datei nicht gemäß den Dokumenten schließen, wenn Sie Folgendes verwenden:
Mehr hier: https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects
quelle
Hier ist ein Beispiel angegeben, wie man es benutzt
open
und "Python"close
Es ist notwendig, wie oft Sie die Datei geöffnet haben, um diese Zeiten zu schließen.
quelle
open
aber vorher eine Ausnahmeclose
ausgelöst wird, wird die Datei mit diesem Ansatz nicht ordnungsgemäß geschlossen. Mitwith
odertry
/finally
schließt die Datei korrekt auch in Gegenwart von Ausnahmen.