Ответ 1
Исключение имеет атрибут errno
:
try:
fp = open("nothere")
except IOError as e:
print(e.errno)
print(e)
C имеет perror и errno, которые печатают и сохраняют последнюю обнаруженную ошибку. Это удобно при выполнении файла io, так как мне не нужно fstat() каждый файл, который не работает в качестве аргумента функции fopen(), чтобы представить пользователю причину, по которой не удалось выполнить вызов.
Мне было интересно, что это правильный способ захватить errno, когда изящно обрабатывает исключение IOError в python?
In [1]: fp = open("/notthere") --------------------------------------------------------------------------- IOError Traceback (most recent call last) /home/mugen/ in () IOError: [Errno 2] No such file or directory: '/notthere' In [2]: fp = open("test/testfile") --------------------------------------------------------------------------- IOError Traceback (most recent call last) /home/mugen/ in () IOError: [Errno 13] Permission denied: 'test/testfile' In [5]: try: ...: fp = open("nothere") ...: except IOError: ...: print "This failed for some reason..." ...: ...: This failed for some reason...
Исключение имеет атрибут errno
:
try:
fp = open("nothere")
except IOError as e:
print(e.errno)
print(e)
Вот как вы можете это сделать. Также см. Модуль errno
и os.strerror
для некоторых утилит.
import os, errno
try:
f = open('asdfasdf', 'r')
except IOError as ioex:
print 'errno:', ioex.errno
print 'err code:', errno.errorcode[ioex.errno]
print 'err message:', os.strerror(ioex.errno)
Дополнительные сведения об атрибутах IOError см. в базовом классе EnvironmentError:
try:
fp = open("nothere")
except IOError as err:
print err.errno
print err.strerror