テキストファイルを読み込んでみよう

学習の目標

本章では、以下の内容を学習します。

  • ファイルとは何かを理解する
  • Pythonでテキストファイルを開く方法を学ぶ
  • with文を使った安全なファイル操作を習得する
  • ファイルの内容を全て読み込む方法を理解する
  • ファイルを1行ずつ読み込む方法を学ぶ

ファイルとは何か

これまでPythonプログラムでは、変数や配列、辞書にデータを保存してきましたが、これらのデータはプログラムを終了すると消えてしまいます。

一方で、コンピュータの中にあるファイルは、プログラムを終了してもデータが残り続けます。 例えば、皆さんが普段使っているメモ帳のファイルや、写真のファイルなどです。

今回学習するのは、その中でもテキストファイルの読み込み方法です。 テキストファイルとは、文字データが保存されているファイルのことで、メモ帳で開いて読むことができるファイルです。

Pythonを使うと、このようなテキストファイルの中身をプログラムで読み込んで、データとして活用することができるのです。

読み込み用のテキストファイルを準備しよう

まずは、読み込むためのテキストファイルを準備しましょう。

VS Codeで新しいファイルを作成し、sample.txtという名前で保存してください。 このファイルの中に、以下のような内容を入力してください。

こんにちは
今日はいい天気ですね
Pythonでファイルを読み込んでいます

このファイルを保存したら、次にPythonプログラムを作成していきます。 同じフォルダにfile_read.pyというファイルを作成してください。

ファイルの配置は以下のようになります。

プロジェクトフォルダ/
├── sample.txt
└── file_read.py

同じフォルダにファイルがあることで、Pythonプログラムからファイルを簡単に参照できるようになります。

open関数でファイルを開く

Pythonでファイルを読み込むには、まずopen関数を使ってファイルを開く必要があります。

file_read.pyに以下のコードを入力してみましょう。

# ファイルを開く
file = open('sample.txt', 'r', encoding='utf-8')

# ファイルの内容を読み込む
content = file.read()

# 読み込んだ内容を表示
print(content)

# ファイルを閉じる
file.close()

このコードを実行してみましょう。 VS Codeのターミナルで以下のコマンドを実行してください。

python file_read.py

実行すると、以下のような結果が表示されるはずです。

こんにちは
今日はいい天気ですね
Pythonでファイルを読み込んでいます

コードの説明をしていきましょう。

open('sample.txt', 'r', encoding='utf-8')では、ファイルを開いています。 第1引数の'sample.txt'は読み込むファイル名、第2引数の'r'は読み込みモード(readの意味)、encoding='utf-8'は文字エンコーディングの指定です。

file.read()でファイルの内容を全て読み込み、変数contentに保存しています。 その後、print(content)で読み込んだ内容を表示し、最後にfile.close()でファイルを閉じています。

ファイルを開いたら、必ずclose()で閉じることが重要です。 これを忘れると、コンピュータのメモリを無駄に使ってしまうことがあります。

with文を使った安全なファイル操作

先ほどのコードでは、file.close()を明示的に呼び出していました。 しかし、エラーが発生した場合などにclose()が実行されない可能性があります。

このような問題を避けるために、Pythonではwith文を使う方法が推奨されています。 with文を使うと、ファイルの処理が終わったら自動的にファイルが閉じられます。

先ほどのコードをwith文を使って書き直してみましょう。

# with文を使ってファイルを安全に開く
with open('sample.txt', 'r', encoding='utf-8') as file:
    # ファイルの内容を読み込む
    content = file.read()
    
    # 読み込んだ内容を表示
    print(content)

# ここで自動的にファイルが閉じられる
print("ファイルの読み込みが完了しました")

このコードを実行してみましょう。

python file_read.py

実行結果は以下のようになります。

こんにちは
今日はいい天気ですね
Pythonでファイルを読み込んでいます
ファイルの読み込みが完了しました

with文を使うことで、file.close()を書く必要がなくなります。 with文のブロックを抜けると、自動的にファイルが閉じられるので安全です。

このwith文を使った書き方が、Pythonでファイルを扱う際の基本的なパターンになります。

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

今まではread()メソッドでファイル全体を一度に読み込んでいました。 しかし、ファイルが非常に大きい場合や、行ごとに異なる処理をしたい場合は、1行ずつ読み込む方が便利です。

新しくline_read.pyというファイルを作成し、以下のコードを入力してみましょう。

# ファイルを1行ずつ読み込む
with open('sample.txt', 'r', encoding='utf-8') as file:
    for line in file:
        # 各行を表示(行番号付き)
        print(f"読み込んだ行: {line}")

このコードを実行してみましょう。

python line_read.py

実行結果は以下のようになります。

読み込んだ行: こんにちは

読み込んだ行: 今日はいい天気ですね

読み込んだ行: Pythonでファイルを読み込んでいます

各行の後ろに空行が表示されているのは、ファイルの各行に改行文字が含まれているためです。 この改行文字を取り除きたい場合は、strip()メソッドを使用します。

# 改行文字を取り除いて1行ずつ読み込む
with open('sample.txt', 'r', encoding='utf-8') as file:
    line_number = 1  # 行番号をカウントする変数
    
    for line in file:
        # 改行文字を取り除く
        clean_line = line.strip()
        
        # 行番号と内容を表示
        print(f"{line_number}行目: {clean_line}")
        
        # 行番号を増やす
        line_number += 1

このコードを実行すると、以下のような結果になります。

python line_read.py
1行目: こんにちは
2行目: 今日はいい天気ですね
3行目: Pythonでファイルを読み込んでいます

strip()メソッドは文字列の前後にある空白文字や改行文字を取り除いてくれます。 これにより、ファイルから読み込んだ行をきれいな状態で処理できるようになります。

読み込んだデータをリストに保存する

ファイルから読み込んだ各行をリストに保存して、後から活用することもできます。

新しくfile_to_list.pyというファイルを作成し、以下のコードを入力してみましょう。

# ファイルの内容をリストに保存する
lines = []  # 空のリストを作成

with open('sample.txt', 'r', encoding='utf-8') as file:
    for line in file:
        # 改行文字を取り除いてリストに追加
        clean_line = line.strip()
        lines.append(clean_line)

# リストの内容を確認
print("読み込んだ行数:", len(lines))
print("全ての行:", lines)

# リストの各要素を表示
for i, line in enumerate(lines):
    print(f"{i+1}番目: {line}")

このコードを実行してみましょう。

python file_to_list.py

実行結果は以下のようになります。

読み込んだ行数: 3
全ての行: ['こんにちは', '今日はいい天気ですね', 'Pythonでファイルを読み込んでいます']
1番目: こんにちは
2番目: 今日はいい天気ですね
3番目: Pythonでファイルを読み込んでいます

このようにファイルの内容をリストに保存することで、読み込んだデータを自由に操作できるようになります。 enumerate()関数を使うと、リストの要素とそのインデックス番号を同時に取得できて便利です。

ファイルが存在しない場合の対処

指定したファイルが存在しない場合、Pythonではエラーが発生します。 実際にエラーを確認してみましょう。

error_test.pyというファイルを作成し、以下のコードを入力してください。

# 存在しないファイルを開こうとする
try:
    with open('not_found.txt', 'r', encoding='utf-8') as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print("指定されたファイルが見つかりませんでした")

このコードを実行してみましょう。

python error_test.py

実行結果は以下のようになります。

指定されたファイルが見つかりませんでした

try-except文を使うことで、ファイルが存在しない場合でもプログラムが停止せず、適切なメッセージを表示できます。 これにより、ユーザーに分かりやすいエラーメッセージを提供できるのです。

まとめ

本章では、Pythonでテキストファイルを読み込む基本的な方法について学習しました。 習得した内容は以下の通りです。

  • open()関数を使ってファイルを開く方法を理解しました
  • with文を使った安全なファイル操作の重要性を学びました
  • read()メソッドでファイル全体を読み込む方法を習得しました
  • for文を使ってファイルを1行ずつ読み込む方法を理解しました
  • strip()メソッドで不要な改行文字を取り除く方法を学びました
  • 読み込んだデータをリストに保存して活用する方法を習得しました
  • try-except文を使ったエラー処理の基本を理解しました

ファイルの読み込みは、外部のデータをプログラムで活用するための基本的な技術です。 テキストファイルから設定情報を読み込んだり、データファイルを処理したりと、様々な場面で活用できる重要なスキルです。

このセクションは有料サブスクリプションへの登録、またはログインが必要です。完全なコンテンツにアクセスするには、料金ページ(/pricing)をご覧ください。購入済みの場合は、ログインしてください。

Starterプランでより詳しく学習

この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。

作成者:とまだ
Previous
ファイル操作の基礎