Как только вы поймаете IOError
, например, с помощью предложения except IOError, e:
в Python 2. * вы можете проверить e.errno
, чтобы точно определить, какая именно это была ошибка ввода-вывода (к сожалению, не всегда полностью переносимая в разных операционных системах).
См. Модуль errno в стандартной библиотеке Python; открытие файла для записи в файловой системе R / O (в разумной ОС) должно привести к errno.EPERM
, errno.EACCES
или еще лучше errno.EROFS
("файловая система только для чтения"); если файловая система - R / W, но места не осталось, вы должны получить errno.ENOSPC
(«на устройстве не осталось места»). Но вам нужно будет поэкспериментировать с операционными системами, которые вас интересуют (с небольшим USB-ключом заполнение должно быть простым; -).
Нет способа использовать различные предложения except
в зависимости от errno - такие предложения должны различаться классом исключений, которые они ловят, а не атрибутами экземпляра исключения - так что вы нужна отправка if / else или другой вид в пределах одного except IOError, e:
предложения.