【发布时间】:2013-07-10 06:51:26
【问题描述】:
通常我需要将数据输出到文件,或者,如果未指定文件,则输出到标准输出。我使用以下sn-p:
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)
但这不会很好,因为离开with 块时 sys.stdout 已关闭,我不希望这样。我也不想
stdout = open(target, 'w')
...
因为我需要记住恢复原始标准输出。
相关:
- Redirect stdout to a file in Python?
- Handling Exceptions - 与 C++ 相比,关于在 Python 中处理异常的有趣文章
编辑
我知道我可以包装target,定义单独的函数或使用context manager。我寻找一个简单、优雅、惯用的解决方案,不需要超过 5 行
【问题讨论】:
-
太糟糕了,你之前没有添加编辑;)无论如何......或者你可以根本不费心清理你打开的文件:P
-
你的第一个代码 sn-p 在我看来不错:表达意图并做你想做的事。
标签: python