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を使った動的管理があります。プロジェクトの要件に応じて適切な方法を選び、効率的なファイル操作を行いましょう。