メモリと時間を最も効率的に節約しながら、大きなファイルの行数を取得するにはどうすればよいですか?
def file_len(filename):
with open(filename) as f:
for i, _ in enumerate(f):
pass
return i + 1
ベストアンサー1
1 行で、for
OP のループよりも高速 (ただし最速ではない) かつ非常に簡潔です。
num_lines = sum(1 for _ in open('myfile.txt'))
また、モードを使用して、ファイルを閉じるブロックに含めることで、速度(および堅牢性)を向上させることもできます。rbU
with
with open("myfile.txt", "rbU") as f:
num_lines = sum(1 for _ in f)
注: U
inrbU
モードは Python 3.3 以降では非推奨です。rb
代わりにi を使用してくださいrbU
(また、Python 3.11)。