← トップ
4 / 10

4. with文(with statement)

CONCEPT

with文ウィズ・ブン — リソース自動管理を使うと、ファイルなどを開いたあと自動で閉じてくれます。「開けたら閉める」を忘れないための仕組みです。

📍 使い道: ファイルやDB接続を確実にクローズするパターン
COMMON MISTAKES — よくある間違い
with を使わずにリソースを開くf = open(...) だけだとエラー時に閉じられない可能性があります。with open() を使いましょう。
複数リソースを別々に with で開くwith open("a") as fa, open("b") as fb: のように1行で書けます。
コードを1行ずつ実行してみよう
example.pyPython
1with open("data.txt", "r") as f:# data.txt を読み込みモードで開く
2 content = f.read()# ファイルの中身を全部読んで content に入れる
3 print(content)# content を表示
4print("ファイルは自動で閉じられました")# withブロック終了 → ファイルが自動で閉じられる
« 次の行 » ボタンを押して実行を開始
VARIABLES
実行すると変数の状態が表示されます
with文は「開けたら閉じる」を自動でやってくれます。 with open("file.txt") as f: と書けば、処理が終わったら自動で閉じられます。 「閉じ忘れ」を防ぐための安全な書き方です。
📚 読み方ガイド
モード意味説明
"r"読み込み(read)ファイルの中身を読む
"w"書き込み(write)新しく書き込む(上書き)
"a"追記(append)末尾に追加する
KEY POINT

with文ウィズ・ブン — リソース自動管理では、with の後に「開くもの」を書き、as 変数名 で名前をつける。インデントの中で作業し、インデントを出たら自動で閉じられる。with を使わないと close() の書き忘れが発生する。

確認問題
1with を抜けたあと、f.read() を呼ぶとどうなる?
with open("test.txt", "r") as f: text = f.read() print(f.read())
エラーになります。with文ウィズ・ブン — リソース自動管理ブロックを抜けると自動的にファイルが閉じられるため、fエフ — ファイルオブジェクト.read() は使えません。「ValueError: I/O operation on closed file.」が発生します。
2次のコードの "w" は何を意味する?
with open("log.txt", "w") as f: f.write("エラー発生")
"w" は write(書き込み)の意味です。ファイルを新しく書き込みモードで開きます。既にファイルがある場合は上書きされます。
3with を使わない場合の問題点は?
f = open("data.txt", "r") content = f.read() # f.close() を忘れた!
close() の書き忘れが発生します。ファイルが開いたままになるとメモリリークや、他のプログラムからのアクセス制限の原因になります。with を使えば自動で閉じられるので安全です。
CHEAT SHEET — まとめ
3行で分かる
  • ファイルやDB接続を「開いたら自動で閉じる」構文
  • with open("f") as f: が一番よく使う形
  • クローズ忘れを防ぎ、コードも短く済む
with文