Wenn Sie eine Datei öffnen mit der "with" - Anweisung, Sie müssen noch die Datei zu schließen, Objekt?
Zum öffnen von Dateien bin ich auf die scheinbar älteren syntax:
f = open("sub_ranks.txt","r+")
for line in f:
...
f.close()
Mir wurde gesagt, diese syntax verwenden, anstatt ein paar mal jetzt..
with open("sub_ranks.txt", "r+") as f:
for line in f:
...
Ist ein file-Objekt "in der Nähe" - Anweisung noch notwendig, die im zweiten Beispiel, wenn der "with" - Anweisung verwendet wird?
Und wenn dem so ist, gibt es einen konkreten Grund für die Verwendung von "with" - Anweisung für die Datei zu Lesen? In diesem Fall, es ist (etwas) mehr verbose.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort auf Ihre unmittelbare Frage ist "Nein". Die
with
block stellt sicher, dass die Datei geschlossen wird, wenn die Steuerung verlässt den block, aus welchem Grund auch immer das geschieht, einschließlich der Ausnahmen (naja, außer jemand Riss Sie das Netzkabel an Ihrem computer und einige andere seltene Ereignisse).So ist es gute Praxis zu verwenden
with
block.Nun wohl, nach öffnen einer Datei nur zum Lesen und dann fehlschlägt, um es zu schließen ist nicht , dass viel von einem problem. Wenn die garbage collection kommt (Wann auch immer das sein mag), wird die Datei geschlossen werden, auch wenn es keine Hinweise auf mehr; auf das Letzte, was passieren wird, wenn Ihr Programm beendet wird. In der Tat, einige code-Beispiele, die in den offiziellen docs Vernachlässigung schließen einer Datei, die geöffnet wurde nur für den Lesezugriff. Beim schreiben einer Datei oder bei der Verwendung des "Lesen plus" - Modus wie in deinem Beispiel, müssen Sie auf jeden Fall schließen Sie die Datei. Es gibt viele Fragen, die Sie auf SO den Umgang mit unvollständigen/beschädigten Dateien aufgrund eines Fehlers zu schließen, Sie richtig.
Aus der python-docs, sehe ich, dass eine syntaktische Zucker für den try/finally-Blöcken.
So,
Nicht.
Aus der Python-Dokumentation:
Hier's noch ein Artikel, der klar macht.
Nicht.
Sagen, Sie wollen drucken Sie den Hostnamen wie folgt:
Es die Datei geöffnet wird, seinen job tun, dann schließen Sie die Datei.