打印除stdout和stderr之外的其他地方

时间:2012-08-26 16:20:15

标签: python printing

目前,我可以将信息打印到stdout以及stderr,但我想打印有关进度的信息并将其打印到stdout,stderr和其他地方。这可能吗?

3 个答案:

答案 0 :(得分:3)

您可以使用logging模块将信息同时记录到不同的地方:

import logging

logger = logging.getLogger('your_logger')
logger.setLevel(logging.INFO)

file_handler = logging.FileHandler('errors.log')
file_handler.setLevel(logging.ERROR)
logger.addHandler(file_handler)

stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
logger.addHandler(stream_handler)

logger.warning('I am a warning')
logger.error('I will be printed, but written to the log file as well')
logger.info('I am an info message')

答案 1 :(得分:1)

据我所知,仅通过stdout和stderr输出到控制台。

是否要打印到文件,然后就可以执行此操作

  with open('outfile.txt', 'w') as f:
       f.write('this is a test')

或者如果您更喜欢使用print

       print >> f, 'this is a test'

在上面的示例中,为outfile.txt rite访问打开了名为w的文件。这意味着已经存在的任何数据都将被写入其中的新数据消除。如果您想追加,请以a模式打开文件。有关详细信息,请参阅documentation for open()

需要关闭打开的文件,使用with构造为您处理(并在遇到异常时关闭文件)。

答案 2 :(得分:-1)

使用名为write()的方法创建一个类,然后可以使用

print 'text' >> Printer()

将'text'打印到Printer()对象(python 2.x)或

print('text', file=Printer())

在python 3.x