Что такое with?
with — ключевое слово, которое работает с менеджером контекста и автоматически управляет ресурсами:
- вызывает магический метод __enter__() при входе и открывает ресурс.
- выполняет блок кода.
- вызывает магический __exit__() при выходе, освобождая ресурс и обрабатывая исключения.