是否有针对确定ASCII文件中的行数进行优化的Python包?

Is there a Python package that is optimized for determining the number of lines in an ASCII file?

本问题已经有最佳答案,请猛点这里访问。

是否有优化的python包来确定一个大的ascii文件中有多少行而不将整个文件加载到内存中?这与在python中如何以较低的成本获取行计数的主题不同?问题与内置的python解决方案有关。


您可以逐行迭代:

1
2
with open('filename.txt', 'r') as handle:
    num_lines = sum(1 for line in handle)

以更大的块读取它并只计算换行数可能会更快:

1
2
3
4
5
6
with open('filename.txt', 'r') as handle:
    num_lines = 0

    for chunk in iter(lambda: handle.read(1024*1024), None):
        num_lines += chunk.count('
'
)


另一种选择是使用fileinputlineno方法。

1
2
3
4
5
6
7
import fileinput
x = fileinput.input('test.csv')
for line in x:
    pass
print x.lineno()
3
x.close()