【发布时间】:2017-06-15 08:34:58
【问题描述】:
在一个相对较大的 python3 代码库中,有几个打印语句点缀在我想找到的代码中。如果 print 函数可以被覆盖,它会变得容易得多,以便它总是打印文件名和行号。示例输出:
>>> print("Some Message")
filename:line_number
Some Message
在我的情况下,这尤其是一个问题,因为 python 文件被包装在二进制 blob 中,并且对它们进行 grepping 是徒劳的,但是 traceback 模块给出的文件名仍然是合理的。
对于 python2 解决方案,有这个问题/答案: How to make print() override work "globally"
【问题讨论】:
-
注意,这是你不应该使用
print进行日志记录的一个很好的理由,而是使用实际的logging模块。这将允许您定义完全符合您需要的处理程序和格式化程序。 -
我完全同意,并在我自己的代码中做到这一点
标签: python python-3.x printing overriding