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() 関数の使用例を紹介しました。