Ich versuche, die Abwägungen/Unterschiede zwischen diesen zu Weisen Öffnen von Dateien für line-by-line Verarbeitungline-by-line Dateiverarbeitung, for-Schleife vs mit
with open('data.txt') as inf:
for line in inf:
#etc
vs
zu verstehenfor line in open('data.txt'):
# etc
ich verstehe, dass with
mit der Datei gewährleistet wird geschlossen, wenn die „mit-Block“ (Suite?) verlassen (oder eine Ausnahme begegnet ist). So habe ich with
verwendet, seit ich hier darüber erfahren habe.
Re for
-loop: um das Netz von der Suche und SO, scheint es, dass, ob die Datei geschlossen, wenn der for
-loop verlassen wird, ist abhängig von der Implementierung? Und Ich konnte nichts darüber finden, wie dieses Konstrukt mit Ausnahmen umgehen würde. Weiß jemand?
Wenn ich etwas täuscht über oben, würde ich Korrekturen schätzen, sonst gibt es einen Grund jemals das for
Konstrukt über die with
zu benutzen? (Vorausgesetzt, Sie haben eine Wahl, d. H. Sind nicht durch Python-Version beschränkt)
verwenden. Guter Punkt. Ich hätte etwas sagen sollen, wenn Sie die Wahl haben - dh, Sie sind nicht auf Versionen beschränkt .. Ich werde die Frage aktualisieren. Deine Stimme würde also zu "mit" gehen? – Levon
Ich denke, die Einrückung ist ein Vorteil, da es den Abschnitt bezeichnet, der in einem bestimmten Kontext ist. Sie müssten indessen einrücken, um den gesamten Block in einen Versuch zu wickeln, außer dass die Datei im endgültigen Block – jdi
@jdl guten Punkt schließt - aber bitte lassen Sie wissen, dass das Einrückungsproblem nicht eins war, das ich erwähnte - nur eines, das ich erwähnt habe bemerkte es vor Jahren auf Listen und Gruppen. –