Pythonで複数ファイルを同時に開く方法!with構文の応用入門
先生と生徒の会話形式で理解しよう
生徒
「先生、Pythonで複数のファイルを同時に開きたいときはどうすればいいですか?」
先生
「Pythonではwith構文を使うことで、複数ファイルをまとめて開くことができます。with構文は、ファイルを自動で閉じてくれる便利な仕組みです。」
生徒
「自動で閉じてくれるってどういうことですか?」
先生
「通常、openでファイルを開いた後は、close()で閉じる必要があります。でもwith構文を使うと、処理が終わった時点で自動的にファイルを閉じてくれるんです。」
生徒
「なるほど。それで複数のファイルもまとめて開けるんですね?」
先生
「そうです。例を見ながら理解しましょう。」
1. 複数ファイルを同時に開く基本構文
複数のファイルを同時に開く場合、withを使ってカンマ区切りで指定できます。
with open("file1.txt", "r", encoding="utf-8") as f1, \
open("file2.txt", "r", encoding="utf-8") as f2:
content1 = f1.read()
content2 = f2.read()
print(content1)
print(content2)
ポイント:
- ファイルを
withでまとめて開くことで、処理後に自動で閉じられる \で行を分けることで可読性を向上- 複数ファイルを同時に扱えるので、コピーや比較が簡単になる
2. 読み込んだ内容を比較する例
二つのファイルの内容が同じかどうかを比較する例です。
with open("file1.txt", "r", encoding="utf-8") as f1, \
open("file2.txt", "r", encoding="utf-8") as f2:
content1 = f1.read()
content2 = f2.read()
if content1 == content2:
print("ファイルの内容は同じです。")
else:
print("ファイルの内容は異なります。")
ポイント:
- 複数ファイルを同時に開くと、比較処理もシンプルになる
- 自動で閉じるので、閉じ忘れによるエラーが減る
3. 書き込みを含む複数ファイル操作
読み込みと書き込みを同時に行う例です。
with open("input.txt", "r", encoding="utf-8") as infile, \
open("output.txt", "w", encoding="utf-8") as outfile:
for line in infile:
outfile.write(line.upper()) # 大文字に変換して書き込む
ポイント:
- 読み込むファイルと書き込むファイルを同時に管理
- ループ内で処理しながら別ファイルに書き込むことが可能
4. 注意点とベストプラクティス
- 複数ファイルを同時に開く場合でも、エンコーディングを正しく指定する
- 大規模なファイルを同時に開くとメモリを大量に使うことがあるので注意
- 処理が複雑になる場合は、ファイルごとに
withを分けて記述してもよい - Python 3では、
with構文の利用が推奨されており、ファイル操作の安全性が高まる
5. 実践例:複数ファイルの内容をまとめる
複数のテキストファイルを一つのファイルにまとめる例です。
files = ["file1.txt", "file2.txt", "file3.txt"]
with open("merged.txt", "w", encoding="utf-8") as outfile:
for filename in files:
with open(filename, "r", encoding="utf-8") as infile:
outfile.write(infile.read() + "\n")
ポイント:
- 外側の
withで出力ファイルを開く - 内側の
withで入力ファイルを順番に開く - ファイルを閉じる手間が不要で安全にまとめられる