Python の "with open" ステートメントは、コンテキスト マネージャー内でファイルを開いて操作する便利な方法です。 。ただし、デフォルトでは、一度に 1 つのファイルしか開くことができません。しかし、複数のファイルを同時に変更したり読み取りたりしたい場合はどうすればよいでしょうか?
短い答え: Python 2.7 または 3.1 以降では、次のようにすることができます。 「and」キーワードなしで複数の「with open」ステートメントをリストします:
with open('a', 'w') as a, open('b', 'w') as b: # Perform actions on file handles 'a' and 'b'
以前の Python バージョンでは、「contextlib.nested()」メソッドを使用してコンテキスト マネージャーをネストできました。ただし、このアプローチは、複数のファイルを開く場合には推奨されません。
一度に可変数のファイルを開く必要がある状況のために、Python 3.3 では「contextlib.ExitStack」が導入されました。 「コンテキストマネージャー。これにより、複数のファイル オブジェクトをスタックに追加し、適切な順序で終了できます。
import contextlib with contextlib.ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] # Work with 'files' here
ほとんどの場合、この方が効率的で慣用的であることに留意してください。ファイルを順番に処理します。たとえば、ループを使用して各ファイルを開いて個別に操作できます。
for fname in filenames: with open(fname) as f: # Process file 'f' here
以上がPython の「with open」ステートメントを使用して複数のファイルを同時に開くにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。