結論から言うと、テキストファイルの読み込みは「全部まとめて読むのか、1行ずつ読むのか」を先に決めると、コードを選びやすくなります。
open の基本がわかったあと、次に必要になるのが実際の読み込み方です。
テキストファイルは簡単に見えても、改行の扱いや行ごとの処理で迷いやすい場面があります。
この記事では、テキストファイルを読む方法を、動くコードと一緒に整理します。
この記事でわかること
完成コード
完成コードは次の通りです。
from pathlib import Path
file_path = Path("sample_tasks.txt")
file_path.write_text(
"見積書を作成する\n"
"レビュー依頼を送る\n"
"日報を提出する\n",
encoding="utf-8",
)
with open(file_path, mode="r", encoding="utf-8") as file:
all_text = file.read()
print("まとめて読む:")
print(all_text)
print("1行ずつ読む:")
with open(file_path, mode="r", encoding="utf-8") as file:
for line_number, line in enumerate(file, start=1):
print(f"{line_number}: {line.strip()}")コードのポイント
このコードでは、同じテキストファイルを2つの方法で読み込んでいます。
read()はファイル全体を1つの文字列として取得しますfor line in fileは1行ずつ順番に処理できますline.strip()を使うと、末尾の改行を取り除いて表示しやすくできます
処理の目的によって読み方を変えると、無理のないコードにしやすくなります。
コードを順番に説明します
主要な処理を分けて説明します。
1. 内容をまとめて扱いたいときは read() がわかりやすいです
with open(file_path, mode="r", encoding="utf-8") as file:
all_text = file.read()read() は、ファイルの中身を全部まとめて読み込みます。
そのため、文章全体を表示したいときや、文字列として一括で置換したいときに向いています。
最初は扱いやすい方法ですが、行ごとの意味を使いたいときには少し不便です。
ファイル全体を1つのかたまりとして見たい場面で使うと、意図がはっきりします。
2. 行ごとの処理が必要なら for 文で読むと自然です
with open(file_path, mode="r", encoding="utf-8") as file:
for line_number, line in enumerate(file, start=1):
print(f"{line_number}: {line.strip()}")ファイルオブジェクトは、そのまま for 文で回すことができます。
この形にすると、1行ずつ順番に読みながら処理できるため、一覧データやログを扱いやすくなります。
たとえば、行番号付きで表示したり、特定の行だけ条件分岐したりするときに便利です。
実務では、後から行ごとの処理を追加しやすい形としてよく使います。
3. 改行はそのまま入っているので整形を意識します
for line_number, line in enumerate(file, start=1):
print(f"{line_number}: {line.strip()}")1行ずつ読むと、各行の末尾には改行文字が含まれていることがあります。
そのまま表示すると、空行が増えたように見えることがあります。
そこで strip() を使うと、前後の空白や改行を取り除けます。
ただし、行頭や行末の空白に意味があるデータでは消しすぎることもあるため、用途に応じて rstrip() との使い分けも考えると安心です。
実務で使うときのポイント
実務では、ファイルを読む前に「このあと何をしたいか」を決めると、読み込み方法が選びやすくなります。
- 全文検索やまとめて表示したいなら
read()がわかりやすいです - 行単位で判定や集計をしたいなら、
for line in fileの形が扱いやすいです - 文字コードを明示しておくと、日本語のテキストでも環境差分を減らしやすいです
- 読み込んだ直後に整形しすぎず、どの時点で改行や空白を落とすかを決めると保守しやすいです
業務メモの読み込み、ログ解析の入口、設定値一覧の確認などでは、1行ずつ読む形が特に役立ちます。
次の 3-3 の書き込みや、3-4 のCSV読み込みへ進む前に、この基本を押さえておくと応用しやすくなります。