Python - 打印到多个输出

时间:2012-08-21 07:49:32

标签: python io python-2.7

  

可能重复:
  How do I duplicate sys.stdout to a log file in python?

Python print命令或其他Python命令是否可以将字符串打印到两个目标?例如,我想将两者打印到控制台并在一个语句中输出文件(这样我就不需要复制print语句)。

最好是,我希望有一个Python 2.x的解决方案,如果这可能很重要。

2 个答案:

答案 0 :(得分:13)

理论上,您可以尝试以下方式:

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,因为这基本上就是您想要的。

答案 1 :(得分:2)

评论@ carls的评论(我还没有评论的声誉):

来自Python's documentation

  

在处理文件对象时,最好使用with关键字。这样做的好处是,即使在路上引发异常,文件也会在套件完成后正确关闭。它也比编写等效的try-finally块短得多:

>>> with open('/tmp/workfile', 'r') as f:
...     read_data = f.read()
>>> f.closed
True