← Все вопросы

Зачем нужен with при открытии файла?

Задан 1 месяц назад871 просмотров3 ответа
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

Автозакрытие.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект