文本文件 dummy.txt 包含以下行:
Line 1
Line 2
Line 3
Run Code Online (Sandbox Code Playgroud)
以下程序应该将每一行附加到行列表中。
f1 = open('c:\Python33\dummy.txt')
lines = []
for line in f1:
lines.append(f1.readline())
f1.close()
print(lines)
Run Code Online (Sandbox Code Playgroud)
但它的输出是:
['第 2 行\n', '']
当我使用 IDLE 时,打开文件然后键入lines.append(f1.readline())三遍然后打印行,我得到了我想要的,即['Line 1\n', 'Line 2\n', 'Line 3\n'].
程序出了什么问题?
open将返回一个生成器,您可以正确获取下一行,但在一个循环中您将获得两次。所以这就是你正在做的事情......你f1在循环中调用,然后在追加中f1再次调用拉第二行。最后你在循环头中再次调用它,调用第三行,然后当你在apped中再次调用它时,你将得到文件结尾。这结束了发电机。
做这个:
f1 = open('c:\Python33\dummy.txt')
lines = []
for line in f1:
lines.append(line)
f1.close()
print(lines)
Run Code Online (Sandbox Code Playgroud)
或者
lines = [line for line in f1]
Run Code Online (Sandbox Code Playgroud)
或者
lines = f1.readlines()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
406 次 |
| 最近记录: |