0

文本文件 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', '']

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

程序出了什么问题?

4

1 回答 1

4

open将返回一个生成器,您将正确获取下一行,但您将获得两次循环。所以这就是你正在做的......你f1在循环中调用然后在追加f1被再次调用拉第二行。最后你在循环头中调用它再次调用第三行然后当你在应用程序中再次调用它时你得到文件的结尾。结束生成器。

做这个:

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

或者

lines = [line for line in f1]

或者

lines = f1.readlines()
于 2013-01-20T17:18:02.207 回答