关于python:当“try ..除了IOError”没有捕获它时,如何处理FileNotFoundError?

How to handle FileNotFoundError when “try .. except IOError” does not catch it?

如何捕获Python3上的错误?我在谷歌上搜索了很多,但所有的答案似乎都不管用。文件open.txt不存在,因此应打印e.errno。

这就是我现在尝试的:

这是我定义的函数

1
2
3
4
5
6
try:
    with open(file, 'r') as file:
        file = file.read()
        return file.encode('UTF-8')
except OSError as e:
    print(e.errno)

但是,当我收到这个错误时,我不打印任何内容

1
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'


FileNotFoundErrorOSError的一个子类,捕获它或异常本身:

1
except OSError as e:

在python 3.3中对操作系统异常进行了重新处理;IOError已合并到OSError中。请参阅最新文档中的PEP 3151:改写操作系统和IO异常层次结构部分。

有关更多详细信息,请参阅操作系统异常部分,向下滚动查看类层次结构。

也就是说,您的代码仍然可以工作,因为IOError现在是OSError的别名:

1
2
>>> IOError
<class 'OSError'>

确保将异常处理程序放置在正确的位置。仔细查看异常的回溯,确保您没有错过它实际被提升的位置。最后但同样重要的是,您重新启动了python脚本,对吗?