我正在尝试创建一个函数来识别python文件中的代码是否会通过无限循环。这就是我到目前为止所做的:
def reader(filename):
myfile = open(filename)
counter = 0
#counters the number of lines in the file
for line in myfile:
counter +=1
print line
#print number of lines in file
print counter
#execute the code in file
execution = execfile(filename)
我要做的是执行文件,并尝试计算执行的行数,并将其与前一个计数器中的任何数字进行比较。例如,如果计数器> lines_exected,然后返回True,代码中有一个无限循环。这会有用吗?或者我还需要尝试别的吗?
答案 0 :(得分:8)
这是不可能的。阅读halting problem。
另外,即使理论上可行,或者即使你只是想做某种启发式猜测,你显然也不能只运行文件。如果程序有一个无限循环,你将运行无限循环并陷入其中,所以你永远不会有机会检查你的计数器。
答案 1 :(得分:0)
在一般情况下,this simply cannot be done。您可能能够识别某些显然是无限循环的简单情况(while True:
),并且有静态分析工具可以这样做,但一般情况下无法完成您要做的事情。< / p>