【发布时间】:2012-07-18 07:41:35
【问题描述】:
在史前时代(Python 1.4)我们做到了:
fp = open('filename.txt')
while 1:
line = fp.readline()
if not line:
break
print line
在 Python 2.1 之后,我们做到了:
for line in open('filename.txt').xreadlines():
print line
在我们在 Python 2.3 中获得方便的迭代器协议之前,可以这样做:
for line in open('filename.txt'):
print line
我见过一些使用更详细的例子:
with open('filename.txt') as fp:
for line in fp:
print line
这是未来的首选方法吗?
[edit] 我知道 with 语句可以确保关闭文件...但是为什么文件对象的迭代器协议中没有包含它?
【问题讨论】:
-
恕我直言,最后一个建议并不比之前的更冗长。它只是做了更多的工作(确保文件在您完成后关闭)。
-
@azhrei 多了一行,所以客观上更冗长。
-
我明白你在说什么,但我只是说比较苹果和苹果,你帖子中的倒数第二个建议也需要异常处理代码以匹配最后一个选项的作用。所以在实践中它更加冗长。我想这取决于上下文最后两个选项中哪个是最好的,真的。
标签: python python-3.x python-2.7