Pythonで複数ファイルを開く方法
Python
では、複数のファイルを同時に操作する場合、with
文を使うと非常に簡潔に記述できます。例えば、2つのファイルを同時に開いて処理する場合、次のようなコードになります。
with open('file1.txt', 'r') as f1, open('file2.txt', 'r') as f2:
# ファイルの内容を処理
data1 = f1.read()
data2 = f2.read()
動的にファイルを管理: ExitStack
動的に複数のファイルを開く場合、Python
3.3以降で提供されているExitStack
を使用します。ExitStack
を使うと、ファイルの数が予測できない場合や、例外が発生しても他のファイルが自動的に閉じられるように管理できます。
from contextlib import ExitStack
filenames = ['file1.txt', 'file2.txt', 'file3.txt']
with ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in filenames]
# 各ファイルを処理
ExitStack
は、動的なファイル操作や複数のコンテキストマネージャを効率よく扱う場面で非常に有用です。
入れ子のwith
文
Python
2.xのように、with
文が1行に複数使えない場合は、入れ子のwith
を使用してファイルを管理することも可能です。
with open('file1.txt', 'r') as f1:
with open('file2.txt', 'r') as f2:
# 処理
ただし、Python
2.7や3.1以降のバージョンでは、複数のファイルを同時に開くための簡潔な方法がサポートされているため、入れ子よりもwith
文の複数記述の方が推奨されます。
まとめ
Python
で複数のファイルを同時に開く方法には、with
文を使ったシンプルな方法や、ExitStack
を使った動的管理があります。プロジェクトの要件に応じて適切な方法を選び、効率的なファイル操作を行いましょう。