結論から言うと、テキストファイルの読み込みは「全部まとめて読むのか、1行ずつ読むのか」を先に決めると、コードを選びやすくなります。

open の基本がわかったあと、次に必要になるのが実際の読み込み方です。
テキストファイルは簡単に見えても、改行の扱いや行ごとの処理で迷いやすい場面があります。
この記事では、テキストファイルを読む方法を、動くコードと一緒に整理します。

この記事でわかること

  • read() でまとめて読む方法
  • for 文で1行ずつ処理する方法
  • 改行を整えながら読み込む基本

完成コード

完成コードは次の通りです。

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読み込みへ進む前に、この基本を押さえておくと応用しやすくなります。

よくある勘違い・注意点

  • read() が常に便利とは限らず、行ごとの処理には向かないことがあります
  • 1行ずつ読むとき、改行文字が含まれることを見落とすと表示が崩れやすいです
  • strip() は便利ですが、必要な空白まで消す場合があるためデータの性質を確認する必要があります
  • 大きいファイルを毎回全文読み込みすると、扱いづらくなることがあります

まとめ

  • テキストファイルは、全文を扱うなら read()、行ごとに扱うなら for 文が基本です
  • 1行ずつ読むときは、改行の扱いを意識すると見やすくなります
  • 何をしたいかに合わせて読み込み方法を選ぶと、コードが自然になります
  • この基本を押さえると、書き込みやCSV処理にもつなげやすくなります