在使用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”语句有其他用途)。
编辑:上述两个代码块的功能是否相同?
编辑2:前几个答案通常谈论使用“with”的好处,但这些好处在这里看起来并不明显。 多年来,我们一直在明确调用f.close(),或者至少应该这样做。 我想一个好处是懒散的程序员将受益于使用“with”语句。