是否有优化的Python包来确定在一个大的ASCII文件中有多少行而不将整个文件加载到内存中?这与如何在Python中廉价地获得行计数的主题不同?其中问题与内置的Python解决方案有关。
您可以逐行遍历它:
with open('filename.txt', 'r') as handle:
num_lines = sum(1 for line in handle)
它可能读取更大的块并且只计算换行符会更快:
with open('filename.txt', 'r') as handle:
num_lines = 0
for chunk in iter(lambda: handle.read(1024*1024), None):
num_lines += chunk.count('n')
另一种选择是使用fileinput
的lineno
方法
import fileinput
x = fileinput.input('test.csv')
for line in x:
pass
print x.lineno()
3
x.close()