我正在尝试创建一个函数来识别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,则代码中存在无限循环。这行得通吗?还是我必须尝试其他方法?
是不可能的。 阅读停止问题。
此外,即使理论上是可能的,或者即使您只是想进行某种启发式猜测,您显然无法仅通过运行文件来做到这一点。 如果程序有一个无限循环,你将运行无限循环并陷入其中,所以你永远没有机会检查你的计数器。
在一般情况下,这根本无法做到。 你也许能够识别某些简单的情况,这些情况显然是无限循环(while True:
),并且有静态分析工具可以做到这一点,但一般来说,没有办法做你想做的事情。