Атрибут 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'