本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
第19回|Pythonでファイルを読み込む方法とは?openとwithの基本をやさしく解説|はじめてのPython

はじめてのPython | 第19回
1. はじめに
この回では、ファイルを読み込む方法を学びます。前回は、モジュールを使って機能を増やす方法を確認しました。
Pythonでは、画面に表示するだけでなく、ファイルに保存された文字を読み取って使うこともできます。テキストファイルを読み込めるようになると、外部にあるデータをプログラムで扱えるようになります。
2. この回で学ぶこと
openwithreadreadlineforで1行ずつ読む方法- 文字コードの基本
3. 概念の説明
ファイルを読み込むときは、まず open() を使います。open() は、ファイルを開くための関数です。
file = open("memo.txt", "r", encoding="utf-8")このコードでは、memo.txt を読み込みモードで開いています。"r" は読み込みを意味します。encoding="utf-8" は、文字コードを UTF-8 として扱う指定です。
ただし、ファイルは開いたあとに閉じる必要があります。そのため、初学者向けには with を使う書き方が基本です。
with open("memo.txt", "r", encoding="utf-8") as file:
text = file.read()
print(text)with を使うと、処理が終わったあとにファイルが自動で閉じられます。この形は、今後も基本として使います。
ファイルの内容をまとめて全部読み込むときは、read() を使います。
with open("memo.txt", "r", encoding="utf-8") as file:
text = file.read()
print(text)read() は、ファイル全体を1つの文字列として読み込みます。
1行だけ読みたいときは、readline() を使います。
with open("memo.txt", "r", encoding="utf-8") as file:
line = file.readline()
print(line)readline() は、先頭から1行だけ読み込みます。
ファイルを1行ずつ順番に読みたいときは、for を使います。
with open("memo.txt", "r", encoding="utf-8") as file:
for line in file:
print(line)この書き方では、ファイルの各行が順番に line に入ります。
また、文字コードにも注意が必要です。文字コードは、文字をファイルに保存するときのルールです。macOS でも Python でも UTF-8 がよく使われるため、この連載では encoding="utf-8" を基本形として扱います。
4. サンプルコード
次のコードを見てください。
with open("memo.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip())このコードでは、memo.txt を開き、1行ずつ読み込んで表示しています。strip() は、行の最後にある改行を取り除くために使っています。
5. 実行手順
まず、読み込み用の memo.txt というファイルを作ります。
touch memo.txtmemo.txt をエディターで開き、次の内容を書いて保存します。
Python
ファイル読み込み
練習次に、file_read.py というファイルを作ります。
touch file_read.pyfile_read.py をエディターで開き、次のコードを書いて保存します。
with open("memo.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip())保存したら、ターミナルで次のコマンドを実行します。
python3 file_read.py実行結果は次のようになります。
Python
ファイル読み込み
練習6. コードの読み方
with open("memo.txt", "r", encoding="utf-8") as file:は、memo.txtを読み込み用で開いています。- 開いたファイルは
fileという名前で使えます。 "r"は読み込みモードです。今回はファイルを読むだけなので、この指定を使っています。encoding="utf-8"は、文字コードを UTF-8 として読み込む指定です。- 日本語を扱うときは、明示しておくと分かりやすくなります。
for line in file:は、ファイルの内容を1行ずつ取り出しています。- 1回目の繰り返しでは1行目、2回目では2行目というように進みます。
print(line.strip())は、読み込んだ1行を表示しています。strip()を付けることで、行末の改行を取り除いています。
7. 初学者がつまずきやすい点
- ファイルを読む前に、そのファイルが存在している必要がある
open()ではファイル名だけでなく、モードも指定する- 初学者の段階では
with open(...)を基本形として覚える read()は全部、readline()は1行、for line in fileは1行ずつ読む- 日本語を扱うときは
encoding="utf-8"を付ける
特に、read() と readline() と for は役割が違います。一度に全部読みたいのか、1行だけ読みたいのか、1行ずつ順番に読みたいのかで使い分けます。
また、print(line) と書くと、元の改行に加えて print() の改行も入るため、空行が入ったように見えることがあります。その場合は line.strip() を使うと確認しやすくなります。
8. よくあるエラー
1つ目は、ファイルが存在しない場合です。
with open("no_file.txt", "r", encoding="utf-8") as file:
text = file.read()このときは、次のようなエラーになります。
FileNotFoundError: [Errno 2] No such file or directory: 'no_file.txt'ファイル名が正しいか、そのファイルが同じ場所にあるかを確認する必要があります。
2つ目は、文字コードが合っていない場合です。
with open("memo.txt", "r") as file:
text = file.read()環境やファイルの内容によっては、日本語を正しく読めないことがあります。初学者向けの基本形では、encoding="utf-8" を付けておくほうが分かりやすくなります。
3つ目は、with を使わずに開いたファイルを閉じないままにしてしまうことです。
file = open("memo.txt", "r", encoding="utf-8")
text = file.read()
print(text)この書き方でも動くことはありますが、close() を書き忘れやすくなります。そのため、この連載では with open(...) を基本にします。
9. 練習用コード
次のコードを practice_file_read.py として保存して実行してください。
with open("memo.txt", "r", encoding="utf-8") as file:
first_line = file.readline()
print(first_line.strip())実行したあとで、1行目だけが表示されることを確認してください。
余裕があれば、read() を使うコードと、for line in file を使うコードも書いて、読み込み方の違いを確認してください。
10. この回で理解しておくこと
open()はファイルを開くための関数withを使うと、ファイルを自動で閉じられるread()は全体を読み込むreadline()は1行だけ読み込むforを使うと1行ずつ順番に読める- 日本語を扱うときは
encoding="utf-8"を付ける
11. まとめ
今回は、ファイルを読み込む基本を確認しました。open と with を使うと、テキストファイルの内容をPythonで扱えるようになります。
read、readline、for は、それぞれ読み込み方が違います。まずは、with open(..., "r", encoding="utf-8") の形と、目的に応じた読み込み方の違いを整理してください。
12. 次回予告
次回は、ファイルに書き込む方法を学びます。新しい内容を書き込む方法と、追記する方法の違いを確認します。
復習してみよう
復習したい方は、こちらもあわせてご覧ください。










