Контекстный менеджер with отличается от ручного закрытия файла через close() тем, что он автоматически контролирует открытие и закрытие файла. 13
Когда поток управления покидает блок with, вызывается метод exit(), и в случае с файлами в нём вызывается метод close(). 1 Таким образом, при использовании контекстного менеджера не нужно вручную вызывать метод close() каждый раз после работы с файлом, он сам закроется после выхода из блока. 4
Кроме того, из-за исключения, которое может возникнуть в процессе выполнения программы, при ручном закрытии файла через close() последовательность выполнения команд может обойти строку с закрытием файла, в результате чего дескриптор файла останется открытым и ресурсы операционной системы не будут освобождены. 1