Хорошо, позвольте мне показать вам ...
В Python 2.7.x:
=> этот файл не существует:
>>> try:
... open("foo.bar")
... except Exception as e:
... e1 = e
...
>>> e1
IOError(2, 'No such file or directory')
=> Это существует, но у меня нет прав на него
>>> try:
... open("/root/foo.txt")
... except Exception as e:
... e2 = e
...
>>> e2
IOError(13, 'Permission denied')
>>>
Так что здесь вы не можете проверить на e.args[0]
, который также доступен как e.errno
>>> e2.args[0]
13
>>> e2.errno
13
>>>
На Python 3.4.x
>>> try:
... open("foo.bar")
... except Exception as e:
... e1 = e
...
>>> e1
*FileNotFoundError(2, 'No such file or directory')
>>>
>>> try:
... open("/root/foo.txt")
... except Exception as e:
... e2 = e
...
>>> e2
PermissionError(13, 'Permission denied')
Здесь у вас есть два различных подкласса OSError
, поэтому вы можете либо установить два различных подкласса, за исключением предложений, либо - как в python2, но с использованием OSError
вместо IOError
- использовать одно исключение и проверить e.errno
.
И, как вы можете видеть, самостоятельное тестирование занимает около 2 минут, что, безусловно, НАМНОГО меньше, чем понадобилось вам, чтобы подключиться к SO, опубликовать свой вопрос, ответить на комментарии, отредактировать свой вопрос и т. Д. и тд и тп ...