【Python】with open(...) as f: とは?わかりやすく解説!

B!

Pythonでファイルを扱うときによく見かけるのが、with open(...) as f: という構文です。

見慣れないと「何をしてるの?」と思うかもしれませんが、これは「ファイルを開いて安全に使うための基本構文」です。

この記事では、with open(...) の意味、rf の意味、そして「この構文が内部で何をしているのか?」を具体例とともにわかりやすく解説します。

with open(...) as f: は何をしている?

with は「リソースの管理を自動でやってくれる構文」です。

ファイルのように「開いたら閉じる」「使ったら解放する」必要があるものを、安全かつ簡潔に扱うために使います。

with を使うことで、ファイルの開閉(クローズ)を自動で行ってくれるという利点があります。

具体的には、次のような処理をしています:

  • ファイルを開く(open() 関数を使う)
  • ファイルオブジェクトを変数 f に代入する
  • with ブロックの処理が終わると、自動的に f.close() が呼ばれる

手動で f.close() を書かなくても、Pythonが終了処理をやってくれるので、書き忘れによるバグを防げます

with を使わない場合との違い

もし with を使わずにファイルを開くと、自分で .close() を書く必要があります。

この方法でも動きますが、f.close() を忘れるとファイルが開きっぱなしになり、エラーやリソースリークの原因になります。

その点、with を使えば自動で閉じてくれるので、安全性が高いのです。

open() はどんなもの?

open() は、Pythonに最初から備わっている組み込み関数です。
この関数を使うと、テキストファイルやCSVファイルなどを**読み書きするための入り口(ハンドル)**を作ることができます。

もう少し専門的に言うと、open() はファイルの読み書きを行うための ファイルオブジェクト(例:TextIOWrapper クラスのインスタンス)を返す関数です。

このファイルオブジェクトには、.read().write() といった便利なメソッドが含まれていて、読み取りや書き込みができるようになります。

さらに、open() で返されるオブジェクトはコンテキストマネージャという性質を持っています。
そのため with 構文と一緒に使うことで、ファイルを開いたあとの「閉じ忘れ」などを自動で防いでくれるというメリットがあります。

"r" は「読み取り専用」でファイルを開く合図

この "r" は英語の read(読む) の頭文字で、「このファイルは読むだけです」とPythonに伝えるためのモード指定です。

読み込み専用なので、ファイルの中身を変更したり書き込んだりすることはできません。

また、このモードではファイルが存在していないとエラーになる点に注意が必要です。

f は開いたファイルの「ニックネーム」

as ff は、ファイルオブジェクトに付ける変数名です。

この f は好きな名前でOKですが、よく使われるのが f。これは単に file の頭文字で、慣習的に広く使われています。

具体例①:テキストファイルの中身を1行ずつ表示する

ファイルを読み取り専用で開き、中身を1行ずつ表示します。

このコードでは:

  • "r":読み取り専用でファイルを開く
  • encoding="utf-8":文字コードをUTF-8で解釈する
  • line.strip():各行の改行文字や余計な空白を除去

結果として、ファイルの中身が整った形で1行ずつ出力されます。

具体例②:ファイルに文字列を書き込む

今度は、ファイルにテキストを書き込む場合です。モードを "w" に変えます。

このコードでは:

  • "w":書き込み専用モード(内容は上書きされる)
  • ファイルがなければ新しく作られ、あれば中身が消されて書き直される

具体例③:ファイルの末尾に追記する

ファイルの内容を残したまま追加したい場合は、モードを "a"(append)にします。

このように、既存ファイルの末尾にテキストを1行追加できます。

open関数でよく使う「モード」のまとめ

モード 意味 ファイルがない場合
"r" 読み込み(read) エラーになる
"w" 書き込み(write) 新しく作成される
"a" 追記(append) 新しく作成される
"r+" 読み書き(read + write) エラーになる

まとめ

  • with open(...) as f: はファイルを安全に開いて使うための構文
  • open() はPythonの組み込み関数で、ファイルオブジェクト(クラス)を返す
  • "r" は読み取り、"w" は書き込み、"a" は追記モード
  • f はファイルオブジェクトの変数名で、慣例的に f が使われる
  • with を使うことで .close() の書き忘れを防げる

Pythonでファイル操作をするときの基本中の基本となる構文なので、必ず押さえておきたいポイントです。

最新の記事はこちらから