在不阅读的情况下查找csv中的行数

sas*_*llo 4 python csv

是否有一种方法可以在不实际将整个文件加载到内存中的情况下(在 Python 中)查找 csv 文件中的行数?

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

ber*_*eal 9

您不需要将整个文件加载到内存中,因为文件在它们的行方面是可迭代的:

with open(path) as fp:
    count = 0
    for _ in fp:
        count += 1
Run Code Online (Sandbox Code Playgroud)

或者,稍微更地道:

with open(path) as fp:
    for (count, _) in enumerate(fp, 1):
       pass
Run Code Online (Sandbox Code Playgroud)

  • 读取内存中的整个文件(不存储但读取它) (5认同)
  • @aychedee“从磁盘读取整个文件”-是的,“将整个文件加载到内存中”-否。从讨论中我们可以看到,这就是 OP 所要求的。 (4认同)
  • @fabrizioM“读取”,是的,但不是“加载” (2认同)

fab*_*ioM 5

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

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