我正在开发一个使用打印语句而不是 python 日志记录的大型代码库。我想知道是否有建议将所有这些打印语句转换为对 logging.info 的调用?其中许多印刷品分布在几行上,因此任何解决方案都需要处理这些情况,并希望能保持格式。
我已经研究过 python 绳索,但它似乎没有将调用转换为语句的功能,例如将 print 转换为函数调用。
我正在开发一个使用打印语句而不是 python 日志记录的大型代码库。我想知道是否有建议将所有这些打印语句转换为对 logging.info 的调用?其中许多印刷品分布在几行上,因此任何解决方案都需要处理这些情况,并希望能保持格式。
我已经研究过 python 绳索,但它似乎没有将调用转换为语句的功能,例如将 print 转换为函数调用。
您可以使用2to3
并且仅将修复应用于 print 语句 -> 打印功能。
2to3 --fix=print [yourfiles] # just displays the diff on stdout
2to3 --fix=print [yourfiles] --write # also saves the changes to disk
这应该会自动处理所有这些奇怪的情况,然后将打印函数转换为日志记录函数应该是一个简单的查找和替换,例如sed
.
2to3
如果由于某种原因您没有脚本的快捷方式,请lib2to3
改为作为模块运行:
python -m lib2to3 --fix=print .
只需在代码开始之前添加这几行,它就会记录它打印的所有内容。我想你正在寻找这样的东西。
import logging
import sys
class writer :
def __init__(self, *writers) :
self.writers = writers
def write(self, text) :
logging.warning(text)
saved = sys.stdout
sys.stdout = writer(sys.stdout)
print "There you go."
print "There you go2."