是否有一种方法可以在不实际将整个文件加载到内存中的情况下(在 Python 中)查找 csv 文件中的行数?
我希望它可以有一些特殊的优化功能。我现在所能想象的就是一行一行地阅读它并计算行数,但这有点扼杀了其中所有可能的意义,因为我只需要行数,而不是实际内容。
您不需要将整个文件加载到内存中,因为文件在它们的行方面是可迭代的:
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)
是的,您需要先读取内存中的整个文件,然后才能知道其中有多少行。只要认为该文件是一个很长的字符串 Aaaaabbbbbbbbcccccccc\ndddddd\neeeeee\n 就可以知道该字符串中有多少“行”,您需要找到其中有多少个 \n 字符。
如果您想要一个大概的数字,您可以做的是读取几行(~20)并查看每行有多少个字符,然后从文件的大小(存储在文件描述符中)获得可能的估计。