【发布时间】:2012-02-05 04:27:21
【问题描述】:
我知道with 语句可以帮助您解决这个问题:
try:
f = open(my_file)
do_stuff_that_fails()
except:
pass
finally:
f.close()
进入:
with open(my_file) as f:
do_stuff_that_fails()
但是这样更好吗?您仍然必须处理无法打开文件的情况(例如提示用户告诉他他没有权限),因此实际上您将拥有:
try:
with open(my_file) as f:
do_stuff_that_fails()
except (IOError, OSError, Failure) as e:
do_stuff_when_it_doesnt_work()
相当于:
try:
f = open(my_file)
do_stuff_that_fails()
except (IOError, OSError, Faillure) as e:
do_stuff_when_it_doesnt_work()
finally:
f.close()
是的,您获得了两行代码,但是您添加了一层嵌套,这并不能使其更易于阅读。 with 语句的目的是为您节省两行代码还是我遗漏了什么?
为此添加关键字似乎很多,所以我觉得有一些语法可以处理我不知道的额外尝试/除外。
【问题讨论】:
-
"with" 将是一个糟糕的标签名称,容易被新手滥用。我们能找到更好的吗?
-
Python 需要一个:trywith open('whatever', 'r') as f: .... except(blah): ....
标签: python exception with-statement