4

是否存在一种方法来查找 csv 文件中的行数,而无需将整个文件实际加载到内存中(在 Python 中)?

我希望它可以有一些特殊的优化功能。我现在所能想象的就是逐行阅读并计算行数,但这有点扼杀了其中所有可能的意义,因为我只需要行数,而不是实际内容。

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

是的,您需要先读取内存中的整个文件,然后才能知道其中有多少行。只需将文件视为一个长长的字符串 Aaaaabbbbbbbcccccccccc\ndddddd\neeeeee\n 以了解字符串中有多少“行”,您需要找到其中有多少个 \n 字符。

如果您想要一个近似数字,您可以做的是读取几行(〜20)并查看每行有多少个字符,然后从文件的大小(存储在文件描述符中)获得可能的估计值。

于 2013-09-26T06:48:55.137 回答