Шаг 176.
Основы языка Python. Работа с файлами и каталогами. Исключения, возбуждаемые файловыми операциями
На этом шаге мы перечислим основные исключения, возбуждаемые при выполнении операций над файлами и каталогами.
В предыдущих шагах неоднократно говорилось, что функции и методы, осуществляющие файловые операции, при возникновении нештатных ситуаций возбуждают исключение класса OSError
или одно из исключений, являющееся его подклассом. Настало время познакомиться с ними.
Исключений-подклассов класса OSError довольно много. Вот те из них, что затрагивают именно операции с файлами и папками:
- BlockingIOError - не удалось заблокировать объект (файл или поток ввода/вывода);
- ConnectionError - ошибка сетевого соединения. Может возникнуть при открытии файла по сети. Является базовым классом для ряда других исключений более высокого уровня,
описанных в документации по Python;
- FileExistsError - файл или папка с заданным именем уже существуют;
- FileNotFoundError - файл или папка с заданным именем не обнаружены;
- InterruptedError - файловая операция неожиданно прервана по какой-либо причине;
- IsADirectoryError - вместо пути к файлу указан путь к папке;
- NotADirectoryError - вместо пути к папке указан путь к файлу;
- РеrmissionError - отсутствуют права на доступ к указанному файлу или папке;
- TimeoutError - истекло время, отведенное системой на выполнение операции.
Ниже приведен пример кода, обрабатывающего некоторые из указанных исключений.
. . . .
try:
open("С:\temp\new\file.txt")
except FileNotFoundError:
print("Файл отсутствует")
except IsADirectoryError:
print("Это не файл, а папка")
except PermissionError:
print("Отсутствуют права на доступ к файлу")
except OSError:
print("Неустановленная ошибка открытия файла")
. . . .
Примечание.
В версиях Python, предшествующих 3.3, поддерживалась другая иерархия исключений. В частности, поддерживались классы исключений IOError (возникали при файловых операциях
в любых операционных системах) и WindowsError (возникали лишь в системе Windows). Начиная с Python 3.3, эти классы являются синонимами класса OSError.
За подробностями обращайтесь к документации по языку Python.
Со следующего шага мы начнем рассматривать работу с базой данных средствами Python.
Предыдущий шаг
Содержание
Следующий шаг