文件中的Python linecount

时间:2011-04-13 18:09:36

标签: python

对于以下内容:

def linecount(filename):
    count = 0
    for x in open(filename):
        count += 1
    return count

脚本如何“知道”每一行是一个单独的元素? 对于'文件'类型,它是如何基本上按行分开的?谢谢

3 个答案:

答案 0 :(得分:4)

因为当你迭代一个file对象时,它就像你在迭代一样:

open(filename).readlines()

但不存储到内存(这对于大文件很有用)。


Python文档更详细地解释了这一点,但这里有多汁的东西:

>>> f = open('foo.txt', 'r')
>>> f.readlines()
['This is the first line of the file.\n', 'Second line of the file\n']

读取行的另一种方法是遍历文件对象。这是内存效率高,速度快,并且代码更简单:

>>> for line in f:
        print line,

This is the first line of the file.
Second line of the file

答案 1 :(得分:2)

是。文件类从文件中读取数据,并在遇到换行符时生成一个新行。 (你可以在第{551行开始的iobase.c中找到实际的实现)

答案 2 :(得分:0)

我对Python方法的速度感到失望。我已经通过os.popen调用wc.exe来获得最快的结果:

int(os.popen("wc -l " + filename).read().strip().split()[0])