【发布时间】:2017-01-15 05:30:47
【问题描述】:
如何在 Python 2.2 中覆盖打印功能以便能够将输出重定向到自定义记录器。
【问题讨论】:
-
Python 2.2 中没有
print函数,只有print语句。
如何在 Python 2.2 中覆盖打印功能以便能够将输出重定向到自定义记录器。
【问题讨论】:
print 函数,只有print 语句。
我没有要检查的 2.2 版本(为什么要使用这么旧的版本?),但我怀疑以下内容对所有 2.x 都有效。
print 语句识别以>> 开头的第一个参数,以指示要写入哪个文件。
以下内容相同:
print "foo", "bar"
print >>sys.stdout, "foo", "bar"
因此,您可以指定任何file 对象作为目标文件。
f = open("log.txt", "w")
print >>f, "foo", "bar"
如果您想重定向每一个 print 语句(或至少所有未使用如上所示特定文件的语句),您可以简单地将sys.stdout 替换为您想要的文件。
sys.stdout = open("log.txt", "w")
print "foo", "bar" # Goes to log.txt
如果您需要,原始标准输出仍可通过sys.__stdout__ 获得。
【讨论】:
logging 模块而不是print 语句,或者使用subprocess 打开与记录器一起使用的外部命令的管道。 (假设两者都在 2.2 中可用。)