一种快速方法是这样做:
lines = len(list(open(fname)))
然而,这会将整个文件一次性加载到内存中,这实际上违背了迭代器的初衷(它只需要将当前行保留在内存中)。
这种方法行不通:
lines = len(line for line in open(fname))
由于生成器没有长度属性,所以有什么方法可以在不定义计数函数的情况下实现这一点吗?
def count(i):
c = 0
for el in i: c += 1
return c
我理解整个文件需要被读取!但我不希望一次性全部读入内存。