Ответ 1
Атрибут errno
при ошибке должен быть одинаковым на всех платформах. Вы получите исключения WindowsError
в Windows, но поскольку это подкласс OSError, тот же блок "except OSError:
" поймает его. У Windows есть свои собственные коды ошибок, и они доступны как .winerror
, но атрибут .errno
должен присутствовать и использоваться кросс-платформенным способом.
Символьные имена для различных кодов ошибок можно найти в модуле errno
.
Например,
import os, errno
try:
os.mkdir('test')
except OSError, e:
if e.errno == errno.EEXIST:
# Do something
Вы также можете выполнить обратный поиск (чтобы узнать, какой код вы должны использовать) с помощью errno.errorcode
. То есть:
>>> errno.errorcode[17]
'EEXIST'