Mehrere Dateien mit der „with“-Anweisung öffnen
Bei der Arbeit mit Datei-E/A in Python wird die „with open()“-Anweisung verwendet. Die Anweisung bietet eine bequeme Möglichkeit, Dateien automatisch zu öffnen und zu schließen. Wenn Sie jedoch mehrere Dateien gleichzeitig öffnen müssen, kann es beim herkömmlichen Ansatz zu Einschränkungen kommen.
Im folgenden Code müssen wir mit zwei Dateien arbeiten: einer Eingabedatei „oldfile“, aus der gelesen werden soll, und eine Ausgabedatei „newfile“, in die geschrieben werden soll.
<code class="python">def filter(txt, oldfile, newfile): with open(oldfile, 'r', encoding='utf-8') as infile: with open(newfile, 'w') as outfile: # ...</code>
Wie Sie sehen können, müssen wir die „with“-Anweisungen verschachteln, um die Dateien nacheinander zu öffnen. Dies kann zu Problemen führen, wenn beim Arbeiten mit einer der Dateien eine Ausnahme auftritt.
Glücklicherweise bietet Python eine effizientere Lösung: die Verwendung mehrerer „open()“-Anweisungen innerhalb einer einzigen „with“-Anweisung. Dies wird erreicht, indem die Dateien durch Kommas getrennt werden:
<code class="python">def filter(txt, oldfile, newfile): with open(newfile, 'w') as outfile, open(oldfile, 'r', encoding='utf-8') as infile: # ...</code>
Diese Syntax ermöglicht es Ihnen, beide Dateien gleichzeitig zu öffnen und als „Outfile“ bzw. „Infile“ darauf zuzugreifen. Darüber hinaus werden die Dateien automatisch geschlossen, wenn der „with“-Block beendet wird, wodurch eine ordnungsgemäße Ressourcenverwaltung gewährleistet wird.
Dieser Ansatz vereinfacht den Code und eliminiert potenzielle Probleme, die durch verschachtelte „with“-Anweisungen verursacht werden. Es wird in den Python-Versionen 2.7 und 3.1 oder neuer unterstützt. Für ältere Python-Versionen können Sie contextlib.nested verwenden oder die „with“-Anweisungen weiterhin wie zuvor verschachteln.
Das obige ist der detaillierte Inhalt vonWie öffne ich mehrere Dateien gleichzeitig mit der \'with\'-Anweisung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!