with構文を使った安全なファイル操作
with 構文(コンテキストマネージャ)を使うと、ファイルを確実に閉じてくれるので安全です。
1. withを使う理由
# ❌ withなし:エラーが起きるとclose()されない危険がある
f = open("data.txt", "r", encoding="utf-8")
content = f.read()
f.close() # これを忘れるとファイルロックが残る
# ⭕ withあり:ブロックを出ると自動的にclose()される
with open("data.txt", "r", encoding="utf-8") as f:
content = f.read()
# ここでは既にファイルは閉じられている
print("ファイル操作完了")
▶ 出力結果
ファイル操作完了
2. 複数ファイルを同時に開く
with open("input.txt", "r", encoding="utf-8") as fin, open("output.txt", "w", encoding="utf-8") as fout:
for line in fin:
fout.write(line.upper()) # 大文字に変換して書き出す
print("変換完了!")
▶ 出力結果
変換完了!
3. ファイルが存在しない場合の安全な処理
def read_file_safe(path):
try:
with open(path, "r", encoding="utf-8") as f:
return f.read()
except FileNotFoundError:
return f"エラー:{path} が見つかりません"
print(read_file_safe("existing.txt"))
print(read_file_safe("missing.txt"))
▶ 出力結果
ファイルの内容... エラー:missing.txt が見つかりません
