1

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

4

3 回答 3

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')
于 2012-08-26T16:24:52.623 回答
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在上面的示例中,打开了一个名为的文件以进行w仪式访问。这意味着任何已经存在的数据都将被写入其中的新数据清除。如果你想追加你会以a模式打开文件。有关更多信息,请参阅open() 的文档

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

于 2012-08-26T16:22:02.133 回答
-1

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

print 'text' >> Printer()

将“文本”打印到 Printer() 对象(python 2.x)或

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

在 python 3.x 中

于 2012-08-26T16:21:41.280 回答