В настоящее время я использую Python 2 для проекта, для которого требуется встроенное исключение Python 3: FileNotFoundError
. Как это сделать?
Как импортировать FileNotFoundError из Python 3?
Ответ 1
Вы можете, конечно, определить любые исключения, которые вы хотите.
Но они не собираются делать вам ничего хорошего. Весь смысл FileNotFoundError
заключается в том, что любая операция Python, которая запускается в ошибке, не найденной в файле, приведет к возникновению этого исключения. Просто определение вашего собственного исключения не сделает это истинным. Все, что вы получите, это OSError
(или IOError
, в зависимости от версии 2.x) с соответствующим значением errno
. Если вы попытаетесь обработать пользовательский FileNotFoundError
, ваш обработчик никогда не получит вызов.
Итак, вы действительно хотите (например):
try:
f = open(path)
except OSError as e:
if e.errno == errno.ENOENT:
# do your FileNotFoundError code here
else:
raise
Ответ 2
Вы можете просто создать исключение FileNotFoundError
самостоятельно:
class FileNotFoundError(OSError):
pass
Этот новый класс исключений наследует от OSError
так же, как и в Python 3.x.
Вот ссылка на Пользовательские исключения на Python.
Ответ 3
Вместо этого вы можете использовать IOError
:
Поднят, когда операция ввода-вывода (например, оператор печати, встроенная функция open() или метод файлового объекта) завершается с ошибкой по причине, связанной с I/O, например, "файл не найден" или "полный диск".
Этот класс получен из среды EnvironmentError. См. Обсуждение выше для получения дополнительной информации об атрибутах экземпляра исключения.
Изменено в версии 2.6: Изменено socket.error, чтобы использовать это как базовый класс.