with гарантирует автоматическое закрытие файла после завершения блока кода, вне зависимости от того, возникли исключения или нет.  Python автоматически вызывает методы __enter__() при входе в блок with и __exit__() при выходе, последний из которых, в случае файлов, закрывает файл.
В Python конструкция with обеспечивает автоматическое закрытие файла (или любого другого ресурса, поддерживающего контекстный менеджер) сразу после завершения блока кода, находящегося внутри with.  Вам не нужно явно вызывать file.close().
Вот как это работает:
with open('имя_файла.txt', 'режим') as переменная_файла: - Открывает файл в указанном режиме (например, 'r' для чтения, 'w' для записи, 'a' для добавления) и связывает его с переменной (например, file).with выполняется. Вы можете читать из файла, записывать в него или выполнять другие операции.with (будь то нормальное завершение или исключение), вызывается метод __exit__() контекстного менеджера (в данном случае, объекта файла). Этот метод автоматически закрывает файл.Пример:
with open('my_file.txt', 'r') as file:
    for line in file:
      print(line.strip()) # Печатаем каждую строку файла без лишних пробелов
# Файл автоматически закрыт здесь, после завершения блока with.
  Преимущества использования with:
file.close().Таким образом, использование with является рекомендованным способом работы с файлами в Python.