У меня есть функция Python примерно следующей структуры, которая вычисляет некоторые результаты и записывает их в файл:
results = []
with open(filename, "w") as output:
for item in items:
result = compute_stuff(item)
write_result(item, result, output)
results.append(result)
return results
Теперь я не всегда хочу записывать результаты в файл - иногда я только хочу их вычислить и вернуть. Сделать условие "write_result" условно легко, но есть ли способ сделать создание файла зависимым от оператора "с"? (Я знаю, что я мог бы обрабатывать открытие и закрытие файла явно, но я бы взял накладные расходы "try/finally", чтобы оператор "с" был создан, чтобы этого избежать.)
Есть ли элегантное решение для этого?
Отредактировано для добавления:
Я мог бы упростить пример. Вместо записи в произвольный файл я использую matplotlib.backends.backend_pdf.PdfPages
(ссылка) и добавление сюжета (новая страница в PDF) в каждый шаг. В частности, это означает, что я не могу повторно открыть PDF файл с помощью PdfPages
, потому что он будет перезаписан.