Обычно в CPython файл сразу закрывается, когда счетчик ссылок падает до нуля (хотя это не гарантируется для будущих версий CPython)
В других реализациях, таких как Jython, файл выигралне может быть закрыт до тех пор, пока не будет собрана garbarge, что может быть долгое время спустя.
Это плохой стиль иметь код, который работает по-разному в зависимости от поведения реализации.
Если это простоБыстрый скрипт или что-то, что вы пытаетесь использовать в оболочке интерпретатора, это достаточно хорошо, но для любой производственной работы вы обычно должны использовать менеджер контекста, как в ответе Фальмарри