Обработка исключения FileNotFoundError

We use cookies. Read the Privacy and Cookie Policy

Одна из стандартных проблем при работе с файлами — отсутствие необходимых файлов. Тот файл, который вам нужен, может находиться в другом месте, в имени файла может быть допущена ошибка, или файл может вообще не существовать. Все эти ситуации достаточно прямолинейно обрабатываются в блоках try-except.

Попробуем прочитать данные из несуществующего файла. Следующая программа пытается прочитать содержимое файла с текстом «Алисы в Стране чудес», но я не сохранил файл alice.txt в одном каталоге с файлом alice.py:

alice.py

filename = 'alice.txt'

with open(filename) as f_obj:

. .contents = f_obj.read()

Прочитать данные из несуществующего файла нельзя, поэтому Python выдает исключение:

Traceback (most recent call last):

File "alice.py", line 3, in <module>

. .with open(filename) as f_obj:

FileNotFoundError: [Errno 2] No such file or directory: 'alice.txt'

В последней строке трассировки упоминается FileNotFoundError: это исключение выдается в том случае, если Python не может найти открываемый файл. В данном примере функция open() порождает ошибку, и, чтобы обработать ее, блок try начинается перед строкой с вызовом open():

filename = 'alice.txt'

try:

with open(filename) as f_obj:

contents = f_obj.read()

except FileNotFoundError:

. .msg = "Sorry, the file " + filename + " does not exist."

. .print(msg)

В этом примере код блока try выдает исключение FileNotFoundError, поэтому Python ищет блок except для этой ошибки. Затем выполняется код этого блока, в результате чего вместо трассировки выдается доступное сообщение об ошибке:

Sorry, the file alice.txt does not exist.

Если файл не существует, программе больше делать нечего, поэтому код обработки ошибок почти ничего не добавляет в эту программу. Доработаем этот пример и посмотрим, как обработка исключений помогает при работе с несколькими файлами.