是否存在一种在csv文件中查找行数而不实际将整个文件加载到内存中的方法(在Python中)?
我希望它可以有一些特殊的优化功能。我现在可以想象的是逐行读取它并计算线条,但它有点杀死所有可能的意义,因为我只需要行数,而不是实际内容。
答案 0 :(得分:4)
您不需要将整个文件加载到内存中,因为文件可以按行进行迭代:
with open(path) as fp:
count = 0
for _ in fp:
count += 1
或者,稍微更惯用:
with open(path) as fp:
for (count, _) in enumerate(fp, 1):
pass
答案 1 :(得分:3)
是的,您需要先了解内存中的整个文件,然后才知道其中有多少行。 只要认为该文件是一个很长的字符串Aaaaabbbbbbbcccccccc \ ndddddd \ neeeeee \ n 要知道字符串中有多少“行”,你需要找到它们中有多少\ n个字符。
如果你想要一个近似数字你可以做的是读几行(~20)并查看每行有多少个字符,然后从文件的大小(存储在文件描述符中)获得可能的估计。