Kontextmanager zum Öffnen mehrerer Dateien in Python
Pythons with open-Anweisung verwaltet Dateivorgänge effektiv, indem sie Dateien automatisch schließt, wenn der with-Block beendet wird. Das Öffnen mehrerer Dateien mit aufeinanderfolgenden with open-Anweisungen stellt jedoch eine Herausforderung dar, wenn Sie sicherstellen möchten, dass in alle Dateien geschrieben werden kann.
Mehrere with open-Anweisungen kombinieren
Die Syntax Der in der Frage dargestellte Versuch, offene Anweisungen mit dem Schlüsselwort und zu kombinieren, ist ungültig. Um die gewünschte Funktionalität zu erreichen, wurde in Python 2.7 (oder 3.1) und späteren Versionen eine Änderung eingeführt, die es Ihnen ermöglicht, mehrere offene Anweisungen einfach durch Kommas zu trennen:
with open('a', 'w') as a, open('b', 'w') as b: do_something()
Diese Syntax verwaltet den Kontext für mehrere Dateien korrekt. Schließen Sie sie, wenn der with-Block beendet wird.
Alternative für variable Anzahl von Dateien
In Fällen Wenn Sie möglicherweise eine variable Anzahl von Dateien öffnen müssen, bietet die contextlib.ExitStack-Klasse eine Lösung ab Python 3.3:
with ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] # Do something with "files"
Sequentielles vs. gleichzeitiges Öffnen von Dateien
Es ist wichtig zu beachten, dass das gleichzeitige Öffnen mehrerer Dateien nicht immer ideal ist. In den meisten Fällen ist die sequentielle Verarbeitung von Dateien ein gängigerer Ansatz:
for fname in filenames: with open(fname) as f: # Process f
Dieser Ansatz vermeidet potenzielle Probleme im Zusammenhang mit der Ressourcenverwaltung und Dateisperrung.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Dateien in Python mit einer einzigen „with open'-Anweisung öffnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!