Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
生徒
「Pythonでテキストファイルを読み込むときに、一行ずつ処理する方法ってありますか?」
先生
「はい、Pythonにはreadline()とreadlines()という便利なメソッドがあります。これを使えば一行ごとの処理ができますよ。」
生徒
「全部まとめて読み込むのとは何が違うんですか?」
先生
「全部読み込むとメモリを多く使いますが、一行ずつなら大きなファイルでも安全に処理できます。では詳しく見ていきましょう。」
1. readline() とは?
readline()は、テキストファイルから1行だけを読み込むための基本的なメソッドです。呼び出すたびに次の行が順番に取得されるしくみなので、大きなファイルでも少しずつ処理できるのが大きな特徴です。また、読み込んだ行には改行文字\nが含まれるため、画面にきれいに表示したい場合はstrip()を使って取り除くことがよくあります。
まずは、実際に1行ずつ読み進める簡単な例を見てみましょう。初心者でも動きを理解しやすいサンプルです。
with open("sample.txt", "r", encoding="utf-8") as f:
line = f.readline() # 最初の1行を読み込む
while line: # 行がある間はループ
print(line.strip()) # 行末の改行を削除して表示
line = f.readline() # 次の行を読み込む
1行目のテキスト
2行目のテキスト
3行目のテキスト
この方法では、ファイルの行を順番に読みながら処理できるため、ログのような行数が多いファイルでも安全に扱えます。「少しずつ確実に読み進めたい」ときに、readline()はとても役立つ基本の読み込み方法です。
2. readlines() とは?
readlines()は、ファイル全体を一度に読み込み、各行を要素とするリストとして返します。短いファイルならこちらが便利です。
with open("sample.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
print(line.strip())
1行目のテキスト
2行目のテキスト
3行目のテキスト
ただし、大きなファイルだとメモリをたくさん使うので注意が必要です。
3. forループを使った行読み込み
Pythonのファイルオブジェクトは直接ループで回すことができます。内部的にはreadline()を使っており、効率的で簡潔です。
with open("sample.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
この方法は初心者にもおすすめで、短いコードで1行ずつ読み込みができます。
4. 実際の活用例
行単位の読み込みは、ログファイル解析や大量データ処理に役立ちます。例えば、特定のキーワードを含む行だけを抽出できます。
keyword = "エラー"
with open("log.txt", "r", encoding="utf-8") as f:
for line in f:
if keyword in line:
print(line.strip())
このようにすれば、ファイルの中から必要な情報だけを効率的に取り出せます。
5. readline() と readlines() の使い分け
どちらを使うべきかはファイルの大きさや処理内容によります。
- readline():大きなファイル、1行ずつ順に処理したい場合
- readlines():ファイルが小さく、全行をまとめて処理したい場合
また、単純に1行ずつ処理するだけならfor line in fが簡単でおすすめです。
6. プログラミング未経験者へのアドバイス
ファイルを扱うときはwith open()を使いましょう。自動的にファイルを閉じてくれるため、安全でミスが減ります。読み込んだ行は改行文字が含まれるので、表示の際はstrip()を使うときれいに見えます。
まずは小さなテキストファイルを用意して、readline()とreadlines()、そしてfor line in fを使い分けて練習してみると理解が深まります。
まとめ
Pythonでテキストファイルを一行ずつ丁寧に読み込む方法についてじっくり振り返ってみると、実際の開発現場でも役立つ知識が数多く含まれていることがわかります。特に、readlineによる段階的な読み込みやreadlinesによる全体読み込みの違いは、大きなデータを扱うときほど重要になります。さらに、for文を使った読み込みは初心者にも扱いやすく、直感的で、読みやすいコードを保ちながら効率よく処理できる点が魅力です。こうした基本的なファイル操作は、ログ解析やテキストマイニング、設定ファイルの読み込みなど多様な分野で活躍するため、実務でも頻繁に使われる操作となります。実際にプログラムを書くときには、読み込む行に余計な改行が含まれないようstripを活用したり、文字コードを指定して文字化けを防いだりする配慮も欠かせません。とくにutf八やshiftjisなどファイルごとの特性を理解して扱うことは、正確なデータ処理につながります。 また、with構文を使うことでファイルのクローズ処理を自動化し、安全性の高いプログラムを書くことができます。これは初心者がつまずきやすいポイントでもありますが、一度慣れてしまえば非常に便利で、再利用性の高いコードを書く土台となります。テキストを逐次処理する場合、無駄なメモリ消費を避けられるreadlineの能力は特に価値があり、巨大なログファイルや長大なデータを扱う環境では欠かせない存在です。逆に、ファイル全体を一気に操作したいときにはreadlinesが活躍し、リスト形式での柔軟な加工が可能になります。このように目的に応じて各メソッドの特徴を理解し、適切に使い分けることが重要です。 以下に簡単な活用例を改めて示します。
行単位で読み込むサンプルコード
with open("data.txt", "r", encoding="utf-8") as f:
for line in f:
if "重要" in line:
print(line.strip())
このような形式で特定の文字列を抽出したり、ログの中から条件に合った行だけを抽出したりといった処理は、実際の業務で頻繁に行われます。ファイルの読み込みはプログラミングの基本でありながら奥が深く、データ分析、機械学習前処理、システム監視など幅広い用途で活躍します。今回学んだ内容をもとに、より複雑なファイル構造や複数ファイルの連続処理などへ発展させることもできます。こうした地道な操作が正確なプログラムの基礎となり、さらに応用力を高めるための土台にもなります。
生徒「きょう学んだreadlineとreadlinesの違いって、こんなに深い意味があったんですね。」
先生「そうなんです。単に行を読むだけでも、ファイルの大きさや処理の目的で使い分けが必要になります。」
生徒「for文で回す方法がいちばん楽でした。あれは内部的にreadlineを使ってるんですね。」
先生「その通りです。Pythonが裏でうまく処理してくれるので、読みやすく安全な書き方になります。」
生徒「ログ解析にも応用できそうで、すぐ実践してみたくなりました。」
先生「ぜひ試してください。テキストファイルを正確に扱えるようになると、できることの幅がぐんと広がりますよ。」