3

可能重复:
使用带有 try-except 块的 python“with”语句

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

4

1 回答 1

12

首先打开文件,然后将其用作上下文管理器:

try:
   f = open(path, 'rb')
except IOError:
   # Handle exception

with f:
    # other code, `f` will be closed at the end.
于 2012-11-18T14:10:03.977 回答