Надёжно закрыть файл
На прошлой странице вы сами писали close, чтобы закрыть файл. Если программа останавливалась раньше этой строки, файл мог остаться открытым. with закрывает файл сразу, как только заканчиваются строки с отступом. Он делает это и тогда, когда одна из них останавливает программу.
with open("plate.txt", "w", encoding="utf-8") as plate:
plate.write("bread\n")
print("saved")
На экране появляется только saved. Слово bread на экран не попадает: оно записано в plate.txt, потому что write выполнился, пока файл был открыт. Затем отступ закончился, файл закрылся, и только после этого сработал print. В этой программе нет close, и добавлять его не нужно ни после print, ни внутрь отступа. Имя plate обозначает открытый файл, но лишь до конца отступа. Параметр encoding="utf-8" сохраняет буквы как текст, а w по-прежнему стирает слова, которые лежали в файле раньше.
Строка с write сдвинута под with, и именно отступ делает её частью блока. У print("saved") отступа нет, поэтому она находится снаружи и выполняется, только если внутренняя часть дошла до конца.
Допустим, вы пишете 1 / 0 с тем же отступом. Программа остановится, и saved не появится. Файл при этом всё равно закроется: выход из отступа закрывает его раньше, чем программа завершится из-за остановки. Такой строки в программе этой страницы нет.
Следующая страница посвящена пути к файлу. Здесь мы только закрываем файл.
Файл закрывается, когда отступ заканчивается
Итог: на экране saved, в plate.txt лежит bread, а close в программе нет. Если строка внутри отступа остановит программу, файл всё равно закроется, а saved не появится. Дальше будет путь к файлу.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху