Чтение файла без использования конструкции with

Откройте файл перед try и закройте его в finally. Тогда закрытие выполнится и при ошибке чтения или вывода.

Короткий ответ

Что ответить на собеседовании

Откройте файл перед try и закройте его в finally. Тогда закрытие выполнится и при ошибке чтения или вывода.

Подробный разбор

Ответ с пояснениями

Условие

Перепишите приведённый фрагмент кода, открыв файл явно и закрыв его вручную, не используя контекстный менеджер with. Логика работы программы должна остаться неизменной.

with open('text.py', 'r') as file:
    print(file.read())

Ответ

Откройте файл перед try и закройте его в finally. Тогда закрытие выполнится и при ошибке чтения или вывода.

file = open('text.py', 'r')
try:
    print(file.read())
finally:
    file.close()

Если open завершится исключением, блока try ещё не будет: закрывать несуществующий файловый объект не требуется. После успешного открытия finally сработает при нормальном выполнении и при исключении из read или print.

Простой последовательный вызов file.close() без finally недостаточен — при ошибке выполнение до него не дойдёт. Для обычной работы исходный with предпочтительнее: он выражает тот же жизненный цикл короче и уменьшает вероятность утечки ресурса.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее