3

我正在开发一个使用打印语句而不是 python 日志记录的大型代码库。我想知道是否有建议将所有这些打印语句转换为对 logging.info 的调用?其中许多印刷品分布在几行上,因此任何解决方案都需要处理这些情况,并希望能保持格式。

我已经研究过 python 绳索,但它似乎没有将调用转换为语句的功能,例如将 print 转换为函数调用。

4

2 回答 2

3

您可以使用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 .
于 2013-02-26T05:56:10.393 回答
1

只需在代码开始之前添加这几行,它就会记录它打印的所有内容。我想你正在寻找这样的东西。

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."
于 2013-02-26T06:07:11.130 回答