テキストファイルを読み込む
【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと
【読み込み用にファイルを開く】
1)テキストファイルを読み込むためにファイルを開く場合、
・書式
f = open('myfile.txt', 'r')
2)文字エンコーディングを指定する場合
f = open('myfile.txt', 'r', encoding='UTF-8')
3)ファイルが存在しなかった場合
f = open('other.txt', 'r')
>> FileNotFoundError: [Errno 2] No such file or directory: 'other.txt'
【ファイル全体を読み込む(readメソッド)】
ファイルに含まれるテキストをすべて読み込む場合には read メソッドを使用する
・例文
f = open('myfile.txt', 'r')
data = f.read()
f.close()
サンプルコード
1) 次のコードを「sample2-1.py」ファイルに保存する。
f = open('myfile2.txt', 'r', encoding='UTF-8')
data = f.read()
print(data)
f.close()
2)テキストファイル「myfile2.txt」を書く、エンコードをUTF-8 で保存する。
明日の天気はどうだろう。
晴れたらいいな。
雨じゃなかったら公園に行こう。
3)実行する
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
========================= RESTART: D:/Data/sample2-1.py ========================
明日の天気はどうだろう。
晴れたらいいな。
雨じゃなかったら公園に行こう
>>>
※細かな操作は省略
【ファイル全体を行単位で分割してリストとして取得する】
先ほどと同じくファイル全体を読み込んだあとで、読み込んだデータを行単位で分割しリストの要素として追加したものを取得する事ができる。→readlines(hint=-1)
ファイル全体を読み込み、行単位のデータを要素として追加したリストを返します。引数に最大文字数を指定した場合、指定した文字数分だけ読み込みます
・例文1
f = open('myfile2.txt', 'r')
datalist = f.readlines()
print (datalist[0])
print (datalist[1])
print (datalist[2])
f.close()
実行
========================== RESTART: D:/Data/test1-1.py =========================
明日の天気はどうだろう。
晴れたらいいな。
雨じゃなかったら公園に行こう。
>>>
・例文2→for文を使う
f = open('myfile2.txt', 'r')
datalist = f.readlines()
for data in datalist:
print(data)
f.close()
実行
========================== RESTART: D:/Data/test1-2.py =========================
明日の天気はどうだろう。
晴れたらいいな。
雨じゃなかったら公園に行こう。
>>>
・改行を2回も行わないようにする
f = open('myfile2.txt', 'r')
datalist = f.readlines()
print (datalist[0], end=' ')
実行
========================== RESTART: D:/Data/test1-3.py =========================
明日の天気はどうだろう。
明日の天気はどうだろう。
明日の天気はどうだろう。
>>>
サンプルプログラム
1.「sample2-2.py」ファイルに次のコードを書く
f = open('myfile2.txt', 'r', encoding='UTF-8')
datalist = f.readlines()
for data in datalist:
print(data, end='')
f.close()
実行
========================= RESTART: D:\Data\sample2-2.py ========================
明日の天気はどうだろう。
晴れたらいいな。
雨じゃなかったら公園に行こう。
>>>
【ファイルから行単位で読み込む(readlineメソッド)】
ファイル全体ではなくファイルから 1 行ずつファイルの内容を読み込むには readline メソッドを使用します。readline(size=-1)⇔readlines(hint=-1)
1)例文1
1 行分だけファイルを読み込ませるプログラムを書いてファイル「test2-1.py 」に保存する。
f = open('myfile2.txt', 'r', encoding='UTF-8')
data = f.readline()
print (data)
f.close()
実行する
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
========================== RESTART: D:/Data/test2-1.py =========================
明日の天気はどうだろう。
>>>
2)例文2
ファイルの最後まで順番にファイルの内容を読み込んで処理するには、 while 文などを使って次のように記述し、ファイル「test2-2.py 」に保存する
f = open('myfile2.txt', 'r', encoding='UTF-8')
while True:
data = f.readline()
if data == '':
break
print (data)
f.close()
実行する
========================== RESTART: D:/Data/test2-2.py =========================
明日の天気はどうだろう。
晴れたらいいな。
雨じゃなかったら公園に行こう。
>>>
3)例文3
読み込んだデータの末尾から改行を取り除くプログラムを書き、ファイル「test2-3.py 」に保存する。
・プログラムコード
f = open('myfile2.txt', 'r', encoding='UTF-8')
while True:
data = f.readline()
if data == '':
break
print (data.rstrip('\n'))
・実行する
========================== RESTART: D:/Data/test2-3.py =========================
明日の天気はどうだろう。
晴れたらいいな。
雨じゃなかったら公園に行こう。
>>>
【ファイルから行単位で読み込む(for文)】
for 文を使用するとファイルから 1 行ずつファイルの内容を読み込むことができます。次のように記述します。
サンプルコード
f = open('myfile.txt', 'r', encoding='UTF-8')
for data in f:
print (data.rstrip('\n'))
f.close()
・サンプルコードを「sample2-4.py」ファイルに保存して、実行すると
========================= RESTART: D:/Data/sample2-3.py ========================
明日の天気はどうだろう。
晴れたらいいな。
雨じゃなかったら公園に行こう。
>>>