Почему `с open ()` лучше для открытия файлов в Python?

Часто, когда кто-то публикует свой код, люди добавляют в качестве отступления, что «вы должны использоватьwith open('filename') as f синтаксис сейчас. "Я согласен, что большинство старомодныхf = open() заявления не имеют сопровождающих.close(), и я даже ответил на вопросы, где эта зависимость от "неявного закрытия" была полной причиной их проблемы программирования.

Тем не менее, в некоторых случаях ваш код внутриwith Блок, кажется, создает другие неудобства при написании кода. Например, мне иногда нравится использовать флаг в начале, чтобы сказатьwritefile = True, Это позволяет мне открывать и закрывать файл только в том случае, если он будет использоваться, сохраняя тот же поток обработки. В разных местах кода я могу печатать на экране или записывать в файл. (Я понимаю, я бы открылstdout или файл в начале и используйте этот подход вместо этого.)

Мой вопрос:кроме того, что нет необходимости явно закрывать файл, есть ли другие причины использоватьwith синтаксис для обработки файлов, особенно выходные файлы? («Более питонический» сам по себе не является причиной.) Если это дубликат, я был бы рад указать на это, но сам не смог его найти.

Ответы на вопрос(4)

Ваш ответ на вопрос