Блок finally в Python

PythonPythonBeginner

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В дворце древнегипетского faraона разворачивается сцена с магическим очарованием и сложными иероглифами. Королева Египта, обладая глубокой мудростью, столкнулась с критической проблемой: священные записи, которые используются для поддержания баланса наводнения Нила, находятся под угрозой навсегда быть утеряны. Вы, как верный мудрец, были призваны в дворец, чтобы создать устойчивую систему, которая обеспечит сохранение этих записей, используя силы блока finally в Python.

Ваша задача - создать неломаемый хранитель транскриптов, который будет выполнять свои обязанности даже при неожиданных ошибках. С помощью своих навыков вы будете руководить созданием Python-скриптов, которые обрабатывают исключения и гарантированные действия с использованием блока finally, обеспечивая, чтобы священные записи Королевы выдерживали любые испытания и трудности.

Строительство храма try - except - finally

В этом шаге вы создадите основу для вашего хранителя транскриптов, создав файл на Python, который будет выдерживать любые возможные сбои во время выполнения. Для этого вы будете использовать блоки try, except и finally в Python.

Откройте файл под названием transcript_keeper.py в ~/project. В этом файле напишите скрипт на Python, который пытается прочитать важную запись из файла, который может не существовать. Обработайте исключение, если файл отсутствует, и используйте блок finally, чтобы вывести сообщение, гарантирующее, что были выполнены некоторые важные действия по очистке.

Вот код, который нужно поместить в transcript_keeper.py:

def preserve_script():
    try:
        with open('/home/labex/project/sacred_script.txt', 'r') as file:
            contents = file.read()
            print(contents)
    except FileNotFoundError:
        print('The sacred script cannot be found.')
    finally:
        print('Ensuring the preservation environment remains intact.')

preserve_script()

Теперь запустите свой скрипт в терминале с помощью следующей команды:

python3 ~/project/transcript_keeper.py

Если файл sacred_script.txt не существует, должно быть выведено сообщение об ошибке, за которым следует сообщение из блока finally:

The sacred script cannot be found.
Ensuring the preservation environment remains intact.

Вдавливание логики в камень

После создания базовой структуры настало время вдавить в камень логику защиты, сделав ее постоянной. В этом шаге вы усовершенствуете хранитель транскриптов действиями, которые должны выполняться всегда, независимо от успешности операций чтения или нет.

Измените transcript_keeper.py, чтобы включить в блок finally имитацию действия по очистке, которое представляет собой сохранение состояния среды скрипта в файл журнала.

Добавьте это в конец блока finally в transcript_keeper.py:

def preserve_script():
    try:
        with open('/home/labex/project/sacred_script.txt', 'r') as file:
            contents = file.read()
            print(contents)
    except FileNotFoundError:
        print('The sacred script cannot be found.')
    finally:
        print('Ensuring the preservation environment remains intact.')
        with open('/home/labex/project/preservation_log.txt', 'a') as log_file:
            log_file.write('Preservation check completed\n')

preserve_script()

Запустите модифицированный скрипт снова и проверьте, что в preservation_log.txt есть запись журнала.

На вашем терминале должно быть выведено следующее:

$ python3 ~/project/transcript_keeper.py
The sacred script cannot be found.
Ensuring the preservation environment remains intact.
$ cat /home/labex/project/preservation_log.txt
Preservation check completed

Резюме

В этом практическом занятии вы отправились в путешествие в Древнюю Египет, где использовали свои знания о блоке finally в Python, чтобы обеспечить непрерывность священных записей Королевы. С помощью блока finally вы создали надежную систему, которая гарантирует выполнение определенных действий, таких как ведение журнала, независимо от любых ошибок, возникших во время выполнения.

В ходе этой магической приключения вы узнали важность действий по очистке и их реализации с использованием блока finally в Python. Эта безопасная защита гарантирует, что критические операции вашего скрипта будут завершены, в灌输я уверенность в устойчивость вашего кода. Пусть ваше путешествие по миру Python будет по-прежнему так вдохновляющим, как древняя мудрость Египта.