我一直在计算一个很长文件的行数(超过635000
行)。你知道吗
我试过:
def file_len(fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
还有:
num_lines = sum(1 for line in open(fname))
两者都适用于行数不多的文件。我已经检查了制作一个5行文件,工作正常,输出是5
。你知道吗
但是对于一个长文件,它正好有635474
行,上面发布的两个方法的输出都是635466
。你知道吗
我知道文件有635474
行,而不是635466
行,因为我在文件内部创建字符串,最后两行是:
alm_asdf_alarm635473=.NOT USED
alm_asdf_alarm635474=.NOT USED
而且因为如果我打开带有Notepad++
的文件,最后一行被计算为635474
。你知道吗
这背后的逻辑是什么?为什么数的线比真的少?你知道吗
提前谢谢。你知道吗
如果所有行的结构都相同,您可以尝试这样的程序:
找到有差异的第一行就足够了(这里的delta表示第一行的内部编号是1而不是0)。然后您就可以更容易地理解问题真正来自notepad++。你知道吗
注意:如果只有一些行具有此结构,则可以使用该变体:
相关问题 更多 >
编程相关推荐