gpt4 book ai didi

python - 自扫码防止打印报表

转载 作者:太空狗 更新时间:2023-10-30 00:51:13 31 4
gpt4 key购买 nike

我有一个正在开发的 Python 项目,我调用函数 say() 而不是打印语句,这样我就可以在开发期间打印信息并在生产期间记录信息。然而,我经常忘记这一点,并错误地将打印语句放入代码中。有没有办法让 python 程序读取自己的源代码,如果它在函数 say() 之外发现任何打印语句,则退出()?

最佳答案

这可以使用 ast 来完成模块。以下代码将找到对 print 语句和 print() 函数的任何调用,以防你在 Python 3 或 Python 2 上使用 print_function future 。

import ast

class PrintFinder(ast.NodeVisitor):
def __init__(self):
self.prints_found = []

def visit_Print(self, node):
self.prints_found.append(node)
super(PrintFinder, self).generic_visit(node)

def visit_Call(self, node):
if getattr(node.func, 'id', None) == 'print':
self.prints_found.append(node)
super(PrintFinder, self).generic_visit(node)


def find_print_statements(filename):
with open(filename, 'r') as f:
tree = ast.parse(f.read())
parser = PrintFinder()
parser.visit(tree)
return parser.prints_found

print 'hi'
for node in find_print_statements(__file__):
print 'print statement on line %d' % node.lineno

这个例子的输出是:

hi
print statement on line 24
print statement on line 26

关于python - 自扫码防止打印报表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14390911/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com