Pythons „with open“-Anweisung ist eine praktische Möglichkeit, Dateien in einem Kontextmanager zu öffnen und mit ihnen zu arbeiten . Standardmäßig ist jedoch jeweils nur das Öffnen einer Datei möglich. Aber was ist, wenn Sie mehrere Dateien gleichzeitig ändern oder aus ihnen lesen möchten?
Kurze Antwort: Seit Python 2.7 oder 3.1 ist das einfach möglich Listen Sie mehrere „with open“-Anweisungen ohne das Schlüsselwort „and“ auf:
with open('a', 'w') as a, open('b', 'w') as b: # Perform actions on file handles 'a' and 'b'
In früheren Python-Versionen konnten Sie „contextlib.nested()“ verwenden " Methode zum Verschachteln von Kontextmanagern. Dieser Ansatz wird jedoch nicht zum Öffnen mehrerer Dateien empfohlen.
Für Situationen, in denen Sie eine variable Anzahl von Dateien gleichzeitig öffnen müssen, hat Python 3.3 den „contextlib.ExitStack“ eingeführt „Kontextmanager. Dadurch können Sie mehrere Dateiobjekte zu einem Stapel hinzufügen und in der richtigen Reihenfolge beenden:
import contextlib with contextlib.ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] # Work with 'files' here
Bedenken Sie, dass dies in den meisten Fällen effizienter und idiomatischer ist um Dateien nacheinander zu verarbeiten. Sie können beispielsweise eine Schleife verwenden, um jede Datei einzeln zu öffnen und damit zu arbeiten:
for fname in filenames: with open(fname) as f: # Process file 'f' here
Das obige ist der detaillierte Inhalt vonWie können Sie mehrere Dateien gleichzeitig mit der Python-Anweisung „with open' öffnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!