かゆい所に手が届く解説

Pythonのファイル操作入門|open関数の使い方とモード(r, w, aなど)の違いを解説

Pythonのファイル操作入門|open関数の使い方とモード(r, w, aなど)の違いを解説

Python では open() 関数を使ってファイルを開き、さまざまなメソッドを使って内容を読み書きできます。

そのほかにも、ファイル操作に役立つメソッドが用意されていますが、それらの使い方を知らない方も多いです。

この記事では、Pythonでファイルを操作する際の基本と便利なメソッドの使い方について解説します。

ファイルを扱う際のモードについても具体例を用いて解説していますので、参考になれば嬉しいです。

open()関数を使った基本の書き方

以下は、open()関数を使った基本的な使い方です。

ファイルを開き、内容を読み込んで変数に入れています。

fp = open("sample.txt", "r")
data = fp.read()
fp.close()  # 手動で close() が必要

これによって、変数dataにはファイルの内容が入ります。

その際、下記のようにwith文を使う方法は処理が終わると自動でclose()されるため推奨されます。

with open("sample.txt", "r") as fp:
    s = fp.read()
    print(s)  # ファイル全体の内容を出力
# withブロックを抜けると、自動でclose()される

open()関数で使うモードの一覧

Pythonでファイルを操作する際に、open() 関数を使う処理について紹介しました。

この関数には「モード」と呼ばれる引数を指定することで、読み込み・書き込み・追記などの動作を制御できます。

モードを正しく使い分けることで、ファイルの内容を意図せず消してしまったり、読み取りができないといったトラブルを防ぐことができます。

以下の表では、各モードが

  • 読み込み可能か
  • 書き込み可能か
  • ファイルがなければ新規作成されるか
  • 既存の内容が削除されるか

といった違いを分かりやすくまとめています。

各モードの解説

まとめると、次のようになります。

  • "r":読み込み専用。ファイルがなければエラー
  • "r+":読み書き可能。ファイルは存在している必要がある
  • "w":書き込み専用。ファイルの中身はすべて削除される
  • "w+":読み書き可能。ファイルの内容は削除される
  • "a":書き込み専用で追記。既存の内容は消えない
  • "a+":読み書き可能で追記。ポインタは常に末尾
  • "rb":バイナリファイルを読み込むモード
  • "wb":バイナリファイルを書き込むモード。内容は上書き
  • "ab":バイナリファイルへの追記モード

暗記するのは難しいと思うので、必要な時にこちらの記事をご覧ください。

ファイル操作に関するメソッドの一覧

open()関数以外にも、ファイル操作でよく使われるメソッドをまとめて紹介します。

各メソッドの詳細

1. read() – ファイル全体を文字列として取得

特徴:

  • ファイルの内容を すべて文字列として読み込む
  • 改行 (\n) も含めて取得
  • 空の文字列 ("") が返ると、ファイルの終端
with open("sample.txt", "r") as fp:
    content = fp.read()
    print(content)  # ファイルの全内容が出力される

2. readline() – 1行だけ取得

特徴:

  • 1行ずつ 読み込む
  • 2回呼び出すと 次の行 を読む
  • 改行 (\n) も含む
  • ファイルの終端 に到達すると "" を返す
with open("sample.txt", "r") as fp:
    line1 = fp.readline()
    print(line1)  # 最初の1行を出力

    line2 = fp.readline()
    print(line2)  # 次の1行を出力

3. readlines() – 全行をリストで取得

特徴:

  • ファイル全体をリスト (list) 形式で取得
  • 各行がリストの 要素 (str) になる
  • 改行 (\n) を含む
with open("sample.txt", "r") as fp:
    lines = fp.readlines()
    print(lines)  # 例: ["1行目\n", "2行目\n", "3行目\n"]

4. write() – 文字列を書き込む

特徴:

  • 文字列 (str) をファイルに書き込む
  • 既存のファイルに書き込むと、上書き (truncate) される
  • 改行 (\n) は自動で追加されない ので、必要なら手動で入れる
with open("sample.txt", "w") as fp:
    fp.write("Hello, World!\n")
    fp.write("This is a test.\n")

Hello, World!
This is a test.

5. writelines() – リストの内容をまとめて書き込む

特徴:

  • リスト (list[str]) の要素をまとめて書き込む
  • write() と同様、改行 (\n) は含まれない ので手動で追加する必要がある
lines = ["Line 1\n", "Line 2\n", "Line 3\n"]

with open("sample.txt", "w") as fp:
    fp.writelines(lines)

Line 1
Line 2
Line 3

6. seek(offset, whence) – ファイルの読み書き位置を移動

特徴:

  • ファイルの読み書き位置 (カーソル) を移動
  • offset: 移動量
  • whence の値:
    • 0 (デフォルト): ファイルの先頭 (seek(offset, 0))
    • 1: 現在位置から移動 (seek(offset, 1))
    • 2: ファイルの末尾から (seek(offset, 2))
with open("sample.txt", "r") as fp:
    fp.seek(5)  # 5バイト目から読み込む
    content = fp.read()
    print(content)

7. tell() – 現在のファイル位置を取得

特徴:

  • 現在のファイルの読み書き位置を取得
with open("sample.txt", "r") as fp:
    print(fp.tell())  # 0 (先頭)
    fp.read(5)
    print(fp.tell())  # 5 (5バイト目)

8. flush() – 書き込み内容を即時反映

特徴:

  • バッファにあるデータを強制的にディスクに書き込む
  • with open() では 自動で flush される ので、通常は不要
  • 大量のデータを書き込む際に役立つ
with open("sample.txt", "w") as fp:
    fp.write("Hello")
    fp.flush()  # すぐにディスクに書き込む

9. close() – ファイルを閉じる

特徴:

  • 明示的にファイルを閉じる
  • with open() を使う場合は不要(自動で閉じられる)
fp = open("sample.txt", "r")
content = fp.read()
fp.close()  # 手動でファイルを閉じる

推奨: with open() を使うと、自動で閉じられるので安全

まとめ

いかがだったでしょうか。

ファイル操作をマスターすると、Pythonでできることが多くなります。

こちらの記事が参考になればうれしいです。

できるだけ、初心者の方にも理解しやすいように解説したつもりですが、分かりづらい点があればコメントなどでお知らせください。

今後も初心者向けにプログラミングの情報をお届けします。

以下のメルマガにご登録頂くと、不定期に配信をお届けします。

ぜひ購読してください!

それでは、ステキなPythonライフを!

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です