【发布时间】:2011-04-08 05:03:36
【问题描述】:
这是将python“with”语句与try-except块结合使用的正确方法吗?:
try:
with open("file", "r") as f:
line = f.readline()
except IOError:
<whatever>
如果是,那么考虑旧的做事方式:
try:
f = open("file", "r")
line = f.readline()
except IOError:
<whatever>
finally:
f.close()
这里的“with”语句的主要好处是我们可以摆脱三行代码吗? 这个用例对我来说似乎没有什么吸引力(尽管我知道“with”语句还有其他用途)。
编辑:以上两段代码的功能是否相同?
EDIT2:前几个答案一般都在谈论使用“with”的好处,但这些似乎是边际收益。多年来,我们都(或应该)明确地调用 f.close()。我想一个好处是马虎的编码员会从使用“with”中受益。
【问题讨论】:
-
对我来说,不必记住在 finally 语句中关闭()的东西是使用 'with' 的充分理由。我已经看到很多代码无法关闭其资源。据我所知,“with”没有缺点。
标签: python finally with-statement try-catch except