通常我需要将数据输出到 file,或者如果没有指定 file,则输出到 stdout。我使用以下代码片段:
if target:
with open(target, 'w') as h:
h.write(content)
else:
sys.stdout.write(content)
我想重写它,统一处理两个目标。
In ideal case it would be:
with open(target, 'w') as h:
h.write(content)
但是这不会工作得很好,因为当离开 with块时,sys.stdout 是关闭的,我不希望这样。我也不想
stdout = open(target, 'w')
...
因为我需要记住恢复原始的标准输出。
相关阅读:
剪辑
我知道我可以包装 target,定义单独的函数或者使用 上下文管理器。我寻找一个简单,优雅,惯用的解决方案配件,不会需要超过5行