1. ファイルを読み取る最も基本的な方法:
# File: readline-example-1.py
file =open("sample.txt")while1:
line = file.readline()if not line:break
pass # do something
ファイルから1行ずつデータを読み取るのは明らかに遅いですが、メモリを節約できます。
私のマシンで10Mのsample.txtファイルを1秒あたり約32000行で読み取ります
2. fileinputモジュールを使用
# File: readline-example-2.py
import fileinput
for line in fileinput.input("sample.txt"):
pass
書き込み方法は簡単ですが、テストの結果、1秒あたり13,000行のデータしか読み取れず、効率は以前の方法の2倍以上遅くなっています...
3. キャッシュを使用したファイルの読み取り
# File: readline-example-3.py
file =open("sample.txt")while1:
lines = file.readlines(100000)if not lines:breakfor line in lines:
pass # do something
この方法は本当に良いですか?同じデータテストで、1秒あたり96900行のデータを読み取ることができることがわかりました。効率は最初の方法の3倍、2番目の方法の7倍です!
————————————————————————————————————————————————————————————
Python 2.2以降では、forループを直接使用して、ファイルオブジェクトのデータの各行を読み取ることができます。
# File: readline-example-5.py
file =open("sample.txt")for line in file:
pass # do something
Python 2.1では、xreadlinesイテレーターを使用して次のことを実現することしかできません。
# File: readline-example-4.py
file =open("sample.txt")for line in file.xreadlines():
pass # do something