我有一个大致如下结构的 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”有条件很容易,但是还有一种方法可以使“with”语句中的文件创建依赖于条件吗?(我知道我可以明确地处理文件的打开和关闭,但我会产生创建“with”语句以避免的“try/finally”开销。)
有没有一个优雅的解决方案?
编辑添加:
我可能过于简化了这个例子。我没有写入任意文件,而是使用matplotlib.backends.backend_pdf.PdfPages
(链接),并在每一步中添加一个图(PDF 中的新页面)。特别是,这意味着我无法使用 重新打开 PDF 文件PdfPages
,因为它会被覆盖。