← Все вопросы
Зачем нужен with при открытии файла?
16
Видел, что файлы открывают через with open(...) as f. А чем плохо просто f = open(...)? Зачем эта конструкция?
3 ответа
24
✓ Принятый ответ — помог автору
with гарантирует, что файл закроется автоматически — даже если внутри блока вылетит исключение. Если делать f = open(...) и забыть f.close(), файл останется открытым: данные могут не успеть записаться на диск (они в буфере), а в долгоживущей программе накопятся незакрытые дескрипторы.
with open('f.txt', 'w') as f:
f.write('текст')
# здесь файл уже закрыт и сброшен на диск
Это называется контекстный менеджер. По сути with = try/finally с гарантированным close в finally.
8
Чтобы не забыть close() и чтобы файл закрылся даже при ошибке.
3
Автозакрытие.
Ваш ответ
Войдите, чтобы ответить на вопрос.