2

我正在尝试创建一个函数来识别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,代码中存在无限循环。这行得通吗?还是我必须尝试其他方法?

4

2 回答 2

8

这是不可能的。阅读停止问题

此外,即使理论上可行,或者即使您只是想进行某种启发式猜测,您显然也无法仅通过运行文件来做到这一点。如果程序有一个无限循环,您将运行无限循环并陷入其中,因此您将永远没有机会检查您的计数器。

于 2013-12-23T00:51:32.007 回答
0

在一般情况下,这根本做不到while True:您可能能够识别出某些明显是无限循环的简单情况(

于 2013-12-23T00:54:29.993 回答