Атрибут errno ошибки должен быть одинаковым на всех платформах. Вы должны получить исключение WindowsError в Windows, но, поскольку это подкласс OSError, тот же блок «кроме OSError:» поймает его. Windows имеет свои собственные коды ошибок, и они доступны как .winerror, но атрибут .errno все равно должен присутствовать и использоваться кросс-платформенным способом. Смотри https://docs.python.org/3/library/exceptions.html
exception OSError
Символические имена для различных кодов ошибок можно найти в модуле errno.
(.env) boris@boris-All-Series:~/ATRERRNO$ ll
total 24
drwxrwxr-x 3 boris boris 4096 авг 1 12:09 ./
drwxr-xr-x 140 boris boris 12288 авг 1 12:01 ../
drwxrwxr-x 6 boris boris 4096 авг 1 11:55 .env/
-rw-rw-r-- 1 boris boris 174 авг 1 12:09 errnoCross.py
(.env) boris@boris-All-Series:~/ATRERRNO$ cat errnoCross.py
import os, errno
try:
os.mkdir('myfolder')
except OSError as e:
if e.errno == errno.EEXIST:
print(e)
print('Failure to create myfolder was caught')
else:
print('Done')
(.env) boris@boris-All-Series:~/ATRERRNO$ python3 errnoCross.py
Done
(.env) boris@boris-All-Series:~/ATRERRNO$ ll
total 28
drwxrwxr-x 4 boris boris 4096 авг 1 12:10 ./
drwxr-xr-x 140 boris boris 12288 авг 1 12:01 ../
drwxrwxr-x 6 boris boris 4096 авг 1 11:55 .env/
-rw-rw-r-- 1 boris boris 174 авг 1 12:09 errnoCross.py
drwxrwxr-x 2 boris boris 4096 авг 1 12:10 myfolder/
(.env) boris@boris-All-Series:~/ATRERRNO$ python3 errnoCross.py
[Errno 17] File exists: 'myfolder'
Failure to create myfolder was caught
No comments:
Post a Comment