为什么我需要为f.readlines()分配一个变量才能得到它的长度?

时间:2012-07-25 14:09:06

标签: python list

如果我这样做:

os.chdir(path)
f = open(file,"r")

lines = f.readlines()
print "without assignment " + str(len(f.readlines()))
print "with assignment     " + str(len(lines))

我希望输出相同,但不是:

without assignment 0
with assigment     1268

为什么会这样?

1 个答案:

答案 0 :(得分:7)

文件对象f是文件行上的迭代器。 f.readlines()将文件光标移动到末尾,但将行保存在lines中,这就是第二个示例适合您的原因。第一个示例不起作用,因为您已到达文件的末尾,并且没有剩余的行可供阅读。如果要使其工作,可以使用f.seek(0)将光标移回文件的开头。