python readline奇怪的行为

python readline奇怪的行为,python,readline,Python,Readline,文本文件dummy.txt包含以下行: Line 1 Line 2 Line 3 下面的程序应该将每一行附加到行列表中 f1 = open('c:\Python33\dummy.txt') lines = [] for line in f1: lines.append(f1.readline()) f1.close() print(lines) 但它的产出是: ['第2行\n',''] 当我使用空闲时,打开文件,然后键入lines.append(f1.readline())三次,然后

文本文件dummy.txt包含以下行:

Line 1
Line 2
Line 3
下面的程序应该将每一行附加到行列表中

f1 = open('c:\Python33\dummy.txt')
lines = []
for line in f1:
    lines.append(f1.readline())
f1.close()
print(lines)
但它的产出是:

['第2行\n','']

当我使用空闲时,打开文件,然后键入
lines.append(f1.readline())
三次,然后打印行,我得到了我想要的,即
['Line 1\n','Line 2\n','Line 3\n']


程序出了什么问题?

open
将返回一个生成器,您可以正确地获取下一行,但一个循环将获取两次。这就是你要做的。。。您在循环中调用
f1
,然后在append
f1
中再次调用第二行。最后在循环头中再次调用它,调用第三行,然后在apped中再次调用它,就得到了文件的结尾。它结束了发电机

这样做:

f1 = open('c:\Python33\dummy.txt')
lines = []
for line in f1:
    lines.append(line)
f1.close()
print(lines)


open
将返回一个生成器,您可以正确地获取下一行,但对于一个循环,您将获得两次。这就是你要做的。。。您在循环中调用
f1
,然后在append
f1
中再次调用第二行。最后在循环头中再次调用它,调用第三行,然后在apped中再次调用它,就得到了文件的结尾。它结束了发电机

这样做:

f1 = open('c:\Python33\dummy.txt')
lines = []
for line in f1:
    lines.append(line)
f1.close()
print(lines)


杰夫,谢谢你的解释。我没有从Python文档中了解到的是,“open()”实际上生成了一个迭代器,因此所有的行都已经在f1中等待读取。谢谢你,先生。杰夫,谢谢你的解释。我没有从Python文档中了解到的是,“open()”实际上生成了一个迭代器,因此所有的行都已经在f1中等待读取。谢谢你,先生。
lines = f1.readlines()