【发布时间】:2012-08-21 07:49:31
【问题描述】:
Python print 命令或其他 Python 命令是否可以将字符串打印到两个目的地?例如,我想在一个语句中同时打印到控制台和输出文件(这样我就不需要重复 print 语句)。
如果可能的话,我希望有一个 Python 2.x 的解决方案。
【问题讨论】:
标签: python io python-2.7
Python print 命令或其他 Python 命令是否可以将字符串打印到两个目的地?例如,我想在一个语句中同时打印到控制台和输出文件(这样我就不需要重复 print 语句)。
如果可能的话,我希望有一个 Python 2.x 的解决方案。
【问题讨论】:
标签: python io python-2.7
理论上,您可以尝试以下方法:
class Out(object):
def write(self, s):
sys.__stdout__.write(s)
open('/tmp/log', 'a').write(s)
sys.stdout = Out()
...
print something # prints to stdout and logs
但更简洁的方法是放弃print,而只使用logging,因为这基本上就是您想要的。
【讨论】:
write结束时...
open('/tmp/log', 'a') 的析构函数
对@carls 的评论的评论(我还没有评论的声誉):
处理文件对象时最好使用with 关键字。这样做的好处是文件在其套件完成后正确关闭,即使在途中引发异常也是如此。它也比编写等效的 try-finally 块要短得多:
>>> with open('/tmp/workfile', 'r') as f:
... read_data = f.read()
>>> f.closed
True
【讨论】: