4

実際にファイル全体をメモリにロードせずにcsvファイルの行数を見つける方法はありますか(Pythonで)?

特別に最適化された機能があると思います。私が今想像できるのは、それを1行ずつ読んで行を数えることだけですが、実際のコンテンツではなく行数だけが必要なので、考えられるすべての意味を殺してしまいます。

4

2 に答える 2

9

ファイルは行単位で反復可能であるため、ファイル全体をメモリにロードする必要はありません。

with open(path) as fp:
    count = 0
    for _ in fp:
        count += 1

または、もう少し慣用的に:

with open(path) as fp:
    for (count, _) in enumerate(fp, 1):
       pass
于 2013-09-26T06:49:11.590 に答える
4

はい、ファイル内の行数を知る前に、メモリ内のファイル全体を読み取る必要があります。ファイルが長い長い文字列 Aaaaabbbbbbbcccccccc\ndddddd\neeeeee\n であると考えて、文字列に含まれる \n 文字の数を見つけるために必要な「行」の数を知る必要があります。

おおよその数が必要な場合は、数行 (〜 20) を読み取り、1 行あたりの文字数を確認してから、ファイルのサイズ (ファイル記述子に格納されている) から推定値を取得します。

于 2013-09-26T06:48:55.137 に答える