目前,我可以将信息打印到 stdout 和 stderr,但我想打印有关进度的信息并将其打印到 stdout、stderr 和其他地方。这可能吗?
问问题
196 次
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 回答