对于以下内容:
def linecount(filename):
count = 0
for x in open(filename):
count += 1
return count
脚本如何“知道”每一行是一个单独的元素? 对于'文件'类型,它是如何基本上按行分开的?谢谢
答案 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])