Pythonで大きなファイルの行数を安価に取得する方法 質問する

Pythonで大きなファイルの行数を安価に取得する方法 質問する

メモリと時間を最も効率的に節約しながら、大きなファイルの行数を取得するにはどうすればよいですか?

def file_len(filename):
    with open(filename) as f:
        for i, _ in enumerate(f):
            pass
    return i + 1

ベストアンサー1

1 行で、forOP のループよりも高速 (ただし最速ではない) かつ非常に簡潔です。

num_lines = sum(1 for _ in open('myfile.txt'))

また、モードを使用して、ファイルを閉じるブロックに含めることで、速度(および堅牢性)を向上させることもできます。rbUwith

with open("myfile.txt", "rbU") as f:
    num_lines = sum(1 for _ in f)

: UinrbUモードは Python 3.3 以降では非推奨です。rb代わりにi を使用してくださいrbU(また、Python 3.11)。

おすすめ記事