Ich verstehe, dass der with
Block automatisch close()
aufruft, nachdem Sie den Block verlassen, und dass es oft verwendet wird, um sicherzustellen, dass man nicht vergessen, eine Datei zu schließen.Ist der mit Block oder close() mehr Pythonic?
Es scheint, dass es zwischen
with open(file, 'r+') as f:
do_things(f)
und
f = open(file, 'r+')
do_things(f)
f.close()
ist eine Möglichkeit, mehr Pythonic als der andere keinen technischen Unterschied? Welchen sollte ich in meinem Code verwenden?
Es gibt einen großen technischen Unterschied zwischen den beide! Die 'with'-Version stellt sicher, dass' close() 'aufgerufen wird, auch wenn' do_things() 'eine Ausnahme auslöst. Sie müssen der anderen Version ein "try" und ein "finally" hinzufügen, um diesem Verhalten zu entsprechen. – jasonharper
FWIW, ich denke nicht, dass diese Frage ein Duplikat von 3012488 ist. Die Themen überschneiden sich, aber die andere Frage ist sehr weit gefasst und geht nicht speziell darauf ein, welcher Ansatz pythischer ist, um Dateien zu schließen. –