Python でファイルを読み込み

ここでは Python でファイルから文字を読み込む基本的な方法を説明します。

Python の readline() でファイルから1行読み込む

まず、ここでテスト用のファイルとして、次のような内容のテキストファイルを用意します。 ファイル名は test1.txt とします。

1st line
2nd line
3rd line

このファイルから先頭の1行を読み込むには、次のようにします。

with open('test1.txt', mode='r') as f:
    line = f.readline()
    print(line, end='')  # 1st line

ファイルを読み込む場合は、ファイルを「読み込み」モードで開きます。読み込みモードで開くには、 open() 関数で mode='r' を指定します。

with を使ってファイルを開いています。 open() 関数が返すファイルオブジェクトは、 as の後に指定した変数 f にセットされます。

ファイルオブジェクトの readline() 関数を呼ぶと、現在の位置から改行文字までの文字を読み込み、それに改行文字を含んだ文字列を返します。

print() で読み込んだ内容を出力していますが、 print() 関数もデフォルトで最後に改行文字を付けます。 readline() 関数で読み込んだ文字列には、既に末尾に改行文字がついています。 このため print() 関数で末尾に改行文字が付かないように end='' としています。

Python の readlines() でリストに全行読み込む

上の例では先頭の1行しか読み込めていませんでした。全ての行を読み込むには、どうしたら良いでしょうか。

全ての行を読み込むには、 readlines() 関数を使うことができます。

with open('test1.txt', mode='r') as f:
    lines = f.readlines()
    for line in lines:
        print(line, end='')

この結果、変数 lines はリスト型になり、一行毎の文字列がリストの要素としてセットされます。それを for ループで表示しています。

実行結果は次の通りです。

1st line
2nd line
3rd line

Python のファイルオブジェクトから直接 for ループで行毎に読み込む

その他、次のようにファイルオブジェクトをイテラブルとして使い、直接ループすることができます。このとき readlines() の呼び出しは不要です。

with open('test1.txt', mode='r') as f:
    for line in f:
        print(line, end='')

以上、Python でファイルを読み込む基本的な関数である、 readline() 関数と readlines() 関数の使用例を紹介しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門