通常我需要将数据输出到文件,或者如果未指定文件,则输出到标准输出。我使用以下代码段:
if target:
with open(target, 'w') as h:
h.write(content)
else:
sys.stdout.write(content)
我想重写它并统一处理两个目标。
在理想情况下,它将是:
with open(target, 'w') as h:
h.write(content)
但这不会很好,因为 sys.stdout 在离开with
块时被关闭,我不希望那样。我也不想
stdout = open(target, 'w')
...
因为我需要记住恢复原始标准输出。
有关的:
- 将标准输出重定向到 Python 中的文件?
- 处理异常- 与 C++ 相比,关于在 Python 中处理异常的有趣文章
编辑
我知道我可以包装target
、定义单独的函数或使用上下文管理器。我寻找一个简单、优雅、惯用的解决方案,不需要超过 5 行