Pythonでファイルを読み込むときには、すべてを一度に読み込むだけでなく一行ずつやりストに格納する方法、for文で一行ずつ処理する方法があります。
今回はそんなファイルの読み込み方を5つ紹介します。この記事ではopen関数やwith文の使い方は知っている前提で進めます。
ファイルの読み込みとは
ファイルを開くときはopne関数を使いますが、そのとき開いたファイルは「ファイルオブジェクト」が作られます。
これから紹介する読み込むときに使うreadメソッドなどは、このファイルオブジェクトに使えるメソッドになります。
オブジェクトはデータの種類・性質とそのデータに対してできる処理をまとめて指す言葉だと考えておきましょう。メソッドはそのデータ専用の関数という意味です。
全て読み込む
1.readメソッド
「sample.txt」ファイルに書かれている3行の文を読み込んでみると以下のようになります。ファイルの文すべてが出力されています。
1 2 3 |
Hello World! こんにちは ニーハオ |
1 2 3 4 5 6 7 8 9 |
path = r"C:\blog\sample.txt" with open(path, "r", encoding='utf-8') as f: text = f.read() print(text) #出力結果 Hello World! こんにちは ニーハオ |
一行ずつ読み込む
2.readlineメソッド
- 一行だけ読み込む
- 行数だけ実行しないとすべて読み込めない
1 2 3 4 5 6 7 |
path = r"C:\blog\sample.txt" with open(path, "r", encoding='utf-8') as f: text = f.readline() print(text) #出力結果 Hello World! |
上の例では一回だけしかreadlineメソッドを使っていないので最初の一行だけが読み込まれています。もしすべての行を読み込むなら以下のようにします。
1 2 3 4 5 6 7 8 9 10 11 |
path = r"C:\blog\sample.txt" with open(path, "r", encoding='utf-8') as f: text1 = f.readline() text2 = f.readline() text3 = f.readline() print(text1, text2, text3) #出力結果 Hello World! こんにちは ニーハオ |
このようにすればすべての行を読み込めますが、毎回行数が分かっているとも限りません。その時に使えるのがfor文です。
3.for文でループさせる
- for文にファイルオブジェクトを渡す
- ファイルオブジェクトはイテラブル
- イテラブルとは反復可能
1 2 3 4 5 6 7 8 9 |
path = r"C:\blog\sample.txt" with open(path, "r", encoding='utf-8') as f: for line in f: print(line, end='') #出力結果 Hello World! こんにちは ニーハオ |
print関数で出力するときに「end=”」がないと改行が多くなってしまいます。各行に含まれる改行とprint関数の改行が重なるためです。
1 2 3 4 5 6 7 8 9 10 11 |
path = r"C:\blog\sample.txt" with open(path, "r", encoding='utf-8') as f: for line in f: print(line) #出力結果 Hello World! こんにちは ニーハオ |
一行ずつリストに格納する
4.list関数
- 一行ずつリストに格納される
- 改行(\n)も出力される
- 出力結果はreadlinesメソッドと同じ
1 2 3 |
Hello World! こんにちは ニーハオ #改行なし |
1 2 3 4 5 6 7 |
path = r"C:\blog\sample.txt" with open(path, "r", encoding='utf-8') as f: text = f.readlines() print(text) #出力結果 ['Hello World!\n', 'こんにちは\n', 'ニーハオ'] |
5.readlinesメソッド
- 一行ずつリストに格納される
- 改行(\n)も出力される
- 出力結果はlist関数を使ったときと同じ
1 2 3 |
Hello World! こんにちは ニーハオ #改行なし |
1 2 3 4 5 6 7 |
path = r"C:\blog\sample.txt" with open(path, "r", encoding='utf-8') as f: text = f.readlines() print(text) #出力結果 ['Hello World!\n', 'こんにちは\n', 'ニーハオ'] |
改行も出力されるので注意しましょう。次のように改行をたくさんするとその分だけ出力されます。
1 2 3 4 5 |
Hello World! こんにちは ニーハオ #改行 #改行 |
1 2 3 4 5 6 7 |
path = r"C:\blog\sample.txt" with open(path, "r", encoding='utf-8') as f: text = f.readlines() print(text) #出力結果 ['Hello World!\n', 'こんにちは\n', 'ニーハオ\n', '\n', '\n'] |
まとめ
- readメソッド:すべて読み込み
- readlineメソッド:一行ずつ読み込む
- readlinesメソッド:一行ずつリストに格納
- list関数と同じ
- ファイルオブジェクトはfor文でループできる
- ファイル操作で使うosモジュールの関数16個まとめ
- ファイルを読み込む手順【open・close・path・withの使い方】
- ファイルに書き込み・上書き・読み込みする5つの方法【open関数のモード選択】
- フォルダ内のファイル名を取得・名前を変更する方法
- ファイル・フォルダを削除・作成する方法
- 絶対パスと相対パスの判定・変換する方法
- ファイル・フォルダを移動・コピーする方法【shutilモジュールの使い方】
- ファイルを読み込む5通りの方法【リスト・for文・一行ずつ】
- ディレクトリツリーを取得してファイル一覧を表示する方法【os.walkの使い方】
- ファイル・フォルダがあるかどうかの存在確認と判定する方法
プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]