文本文件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']
。
该计划出了什么问题?
答案 0 :(得分:3)
open
会返回一个生成器,你正确地获得了下一行,但是你得到它的两次循环。所以这就是你正在做的......你在循环中调用f1
然后在追加f1
中再次调用第二行。最后你再次在循环标题中调用它来调用第三行,然后当你在apped中再次调用它时,你得到了文件的结尾。它结束了发电机。
这样做:
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()