在使用Python ‘with’语句时捕获异常

问题:

对于我的耻辱,我无法弄清楚如何处理python’with’语句的异常。如果我有一个代码:

with open("a.txt") as f:
    print f.readlines()

我真的想处理’文件未找到异常’为了做某事。但我不能写

with open("a.txt") as f:
    print f.readlines()
except:
    print 'oops'

并不能写

with open("a.txt") as f:
    print f.readlines()
else:
    print 'oops'

在try / except语句中包含“with”不起作用:异常不会引发。为了在Pythonic方式的’with’语句中处理失败,我该怎么办?

回答:

from __future__ import with_statement

try:
    with open( "a.txt" ) as f :
        print f.readlines()
except EnvironmentError: # parent of IOError, OSError *and* WindowsError where available
    print 'oops'

如果您想要打开通话与工作代码的错误处理不同,您可以执行以下操作:

try:
    f = open('foo.txt')
except IOError:
    print('error')
else:
    with f:
        print f.readlines()

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Catching an exception while using a Python ‘with’ statement

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

56 + = 66