カテゴリ: Python 更新日: 2025/10/19

Pythonで大きなファイルを効率的に処理する方法!初心者でもわかるメモリ節約テクニック

Pythonで大きなファイルを効率的に処理する方法(メモリ効率を考慮)
Pythonで大きなファイルを効率的に処理する方法(メモリ効率を考慮)

先生と生徒の会話形式で理解しよう

生徒

「Pythonで大きなファイルを読み込むと、パソコンがすごく重くなったりフリーズしたりするんですけど…」

先生

「それは一度に全部読み込もうとして、パソコンのメモリに負担がかかっているのかもしれません。大きなファイルは少しずつ処理すると効率的ですよ。」

生徒

「少しずつって、どうやってやるんですか?」

先生

「それでは、Pythonでメモリ効率を考えたファイル処理の方法を順番に説明していきましょう!」

-

1. なぜ大きなファイルは注意が必要?

1. なぜ大きなファイルは注意が必要?
1. なぜ大きなファイルは注意が必要?

パソコンには「メモリ」と呼ばれる作業スペースがあります。Pythonで大きなファイルを一気に読み込むと、このメモリを大量に使ってしまい、パソコンが重くなったりフリーズしたりする原因になります。

特にテキストファイルやログファイル、CSVファイルなどが何百MB〜数GBあると、初心者の方が普通にread()で読み込むと危険です。

2. ファイルを1行ずつ読み込む方法

2. ファイルを1行ずつ読み込む方法
2. ファイルを1行ずつ読み込む方法

Pythonでは、for文を使ってファイルを1行ずつ順番に読み込むことができます。これならメモリをほとんど使わず安全です。


with open("bigfile.txt", "r", encoding="utf-8") as f:
    for line in f:
        print(line.strip())

with open()を使うことで、ファイルの開けっぱなしも防げて安心です。line.strip()は、余分な改行を取るおまじないのようなものです。

3. readline()を使う方法

3. readline()を使う方法
3. readline()を使う方法

readline()を使うと、1行ずつ自分のタイミングで読み込むこともできます。こちらはもう少し細かい制御がしたいときに便利です。


with open("bigfile.txt", "r", encoding="utf-8") as f:
    while True:
        line = f.readline()
        if not line:
            break
        print(line.strip())

readline()は1回呼び出すごとに1行だけ読み込む仕組みです。

4. chunk(チャンク)で一定サイズずつ読み込む

4. chunk(チャンク)で一定サイズずつ読み込む
4. chunk(チャンク)で一定サイズずつ読み込む

バイナリファイルやテキストファイルの一部を、指定したサイズずつ読み込むこともできます。これを「チャンク読み」と言います。


with open("bigfile.txt", "r", encoding="utf-8") as f:
    while True:
        chunk = f.read(1024)  # 1024文字(約1KB)ずつ読み込む
        if not chunk:
            break
        print(chunk)

f.read(1024)とすることで、メモリを節約しながら読み込めます。全部を一気に読む必要はありません

-

5. 書き込みもチャンクでできる

5. 書き込みもチャンクでできる
5. 書き込みもチャンクでできる

読み込みだけでなく、書き込み(保存)もチャンクに分けて行うことで効率的に処理できます。


with open("bigfile.txt", "r", encoding="utf-8") as source, open("copy.txt", "w", encoding="utf-8") as target:
    while True:
        chunk = source.read(2048)  # 2KBずつ読み込む
        if not chunk:
            break
        target.write(chunk)

このように、読みながら書くことで、途中で止まることなく大きなファイルをコピーできます。

6. 大きなCSVファイルを読み込むときのコツ

6. 大きなCSVファイルを読み込むときのコツ
6. 大きなCSVファイルを読み込むときのコツ

CSVファイルは行ごとに区切られているので、1行ずつ読み込むのが最もメモリ効率が良いです。

Pythonのcsvモジュールを使えば、表のようなデータも簡単に扱えます。


import csv

with open("data.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

rowはリスト形式で1行分のデータが入っています。巨大なデータも安心して処理できます。

7. メモリ節約のためにやってはいけない読み方

7. メモリ節約のためにやってはいけない読み方
7. メモリ節約のためにやってはいけない読み方

初心者がよくやってしまうのが、次のように全体を一度に読み込む方法です:


f = open("bigfile.txt", "r", encoding="utf-8")
data = f.read()
f.close()

これは数百MBのファイルならOKかもしれませんが、数GB以上あるとフリーズやメモリエラーになる危険があります。

なるべく1行ずつ、もしくはチャンクでの読み込みを使いましょう。

8. ファイル処理を効率化する追加のヒント

8. ファイル処理を効率化する追加のヒント
8. ファイル処理を効率化する追加のヒント
  • 圧縮ファイル(.zipや.gz)gzipzipfileモジュールで直接読み込める
  • データを処理しながら保存することで、保存後のファイルサイズも減らせる
  • ログファイルのように増え続けるファイルには、seek()tail -fのような仕組みも活用できる

Pythonはシンプルなのに、効率的に大きなファイルも扱える柔軟さを持っています。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
PHPでセッションを使ってフォーム入力を保持する方法を解説!初心者向けステップバイステップ
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
Pythonの変数とは?定義方法とデータ型を初心者向けに解説
PHPでメールフォームを作る方法を徹底解説!初心者向けにmail関数とPHPMailerの使い方も紹介
人気記事
No.1
PHP&Python記事人気No1
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
PHP&Python記事人気No2
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.3
PHP&Python記事人気No3
Pythonのリストを辞書に変換する方法(dict() / zip())
No.4
PHP&Python記事人気No4
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
-