open() を使ったファイル操作の基本的なメソッドについて丁寧に説明

ご無沙汰しております。

セイコンのゆうせいです。
今回はopen() を使ったファイル操作の基本的なメソッドについて丁寧に説明していきます。


ファイルを操作するメソッドの基本

ファイルを開いたあと、実際に「読む」「書く」といった操作をするためには、ファイルオブジェクトが持つメソッド(関数のようなもの)を使います。

Pythonでよく使われる代表的なファイル操作メソッドを、下の表にまとめました。

メソッド名説明
.read()ファイル全体を一度に読み込む
.readline()一行ずつ読み込む
.readlines()各行をリストとして読み込む
.write()テキストまたはバイト列を書き込む
.writelines()リストなど複数行を一気に書き込む
.seek()読み書き位置を変更する(カーソル移動)
.tell()現在の読み書き位置を返す

読み込み系メソッドの使い方

.read()

ファイル全体を一度に文字列として取得します。

with open("sample.txt", "r") as f:
    content = f.read()
    print(content)

注意点: 大きなファイル(数百MB〜)を .read() で読み込むと、メモリを大量に使ってしまうことがあります!


.readline()

ファイルを一行ずつ読み込みます。繰り返し処理と相性がいいです。

with open("sample.txt", "r") as f:
    line = f.readline()
    while line:
        print(line.strip())
        line = f.readline()

「strip()」は余分な改行や空白を除くためによく使われます。


.readlines()

全行をリスト(配列のようなもの)として一気に読み込みます。

with open("sample.txt", "r") as f:
    lines = f.readlines()
    for line in lines:
        print(line.strip())

readlines() は手軽ですが、こちらもファイルが大きいときは注意!


書き込み系メソッドの使い方

.write()

文字列を1つ書き込むメソッドです。

with open("memo.txt", "w") as f:
    f.write("こんにちは、Python!\n")

ポイント:自分で改行(\n)を入れる必要があります。


.writelines()

リスト形式で複数行をまとめて書き込みます。

lines = ["1行目\n", "2行目\n", "3行目\n"]
with open("memo.txt", "w") as f:
    f.writelines(lines)

ここでも改行は各要素に含めておく必要があります。


読み書き位置を操作する .seek().tell()

ファイル内で「どこから読み始めるか」「どこに書くか」をコントロールできるのがこの2つです。

  • .seek(位置):指定したバイト位置に移動
  • .tell():現在のバイト位置を返す

例:

with open("sample.txt", "r") as f:
    print(f.tell())   # 0(最初)
    f.read(5)
    print(f.tell())   # 5(5バイト読んだ後)
    f.seek(0)
    print(f.read(5))  # 最初に戻って再読込

※ここでは「バイト」という単位に注意が必要です。特にUTF-8などのエンコーディングでは、1文字=1バイトではないことがあります。


よくあるミスとその対策

ミスの内容原因対策
書いたのに反映されていない.close() 忘れwith 文で開くと自動で閉じてくれる
改行がない.write()\n を入れていない明示的に入れる
ファイルが文字化けするエンコーディングの違いopen(..., encoding="utf-8") を指定する
2回目の .read() が空になる読み位置が末尾になっている.seek(0) で戻す

まとめ:open() の次に学ぶ操作メソッド

ファイルを開くだけで終わりではなく、読み書きするためのメソッドが非常に重要です。
ファイルを操作するたびにどれを使えばいいのか選べるようになると、Pythonでの開発が一気にレベルアップします!


今後の学習の指針

次のステップとしては、以下のテーマに挑戦してみましょう!

  • 例外処理(try...except)とファイル操作の組み合わせ
  • CSVファイルやJSONファイルの読み書き
  • ファイルの存在チェックや削除os モジュールや pathlib

ファイル操作はどのプログラムでも基本中の基本。小さなツールを作るにも必要になるので、実際に手を動かしながら覚えていきましょう!

「CSVも触ってみたい!」「ログファイルの扱い方を知りたい!」という声があれば、ぜひ教えてください!次の記事で詳しく取り上げますよ!

セイ・コンサルティング・グループでは、新人エンジニアの方がPythonプログラムを写経できるタイピングゲームを無償公開中です。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。