我正在使用open
在Python中打开文件。我将文件处理封装在with
语句中:
with open(path, 'r') as f:
# do something with f
# this part might throw an exception
这样我就确定我的文件已关闭,即使抛出了异常。
但是,我想处理打开文件失败的情况(抛出OSError
)。
一种方法是将整个with
块放在try:
中。只要文件处理代码不引发OSError,就可以正常工作。
它可能看起来像:
try:
with open(path, 'rb') as f:
except:
#error handling
# Do something with the file
这当然不起作用,真的很难看。有这样做的聪明方法吗?
由于
PS:我正在使用python 3.3
答案 0 :(得分:11)
首先打开文件,然后将其用作上下文管理器:
try:
f = open(path, 'rb')
except IOError:
# Handle exception
with f:
# other code, `f` will be closed at the end.