代码不';我无法在Python中完成执行

代码不';我无法在Python中完成执行,python,python-2.7,Python,Python 2.7,为了分析文件中的数据,我编写了以下代码。然而,当我实现代码时,它只是挂起,并没有在屏幕上打印一些派生数据。有什么问题吗 #!/usr/bin/python2.7 infile=open("ratios.dat","r") outfile=open("corr_ratios.txt","wb") outfile2=open("corr_ratios2.txt","wb") data=infile.readlines() i=0 while i < len(data): if i

为了分析文件中的数据,我编写了以下代码。然而,当我实现代码时,它只是挂起,并没有在屏幕上打印一些派生数据。有什么问题吗

#!/usr/bin/python2.7

infile=open("ratios.dat","r")
outfile=open("corr_ratios.txt","wb")
outfile2=open("corr_ratios2.txt","wb")

data=infile.readlines()

i=0
while i < len(data):
    if i+2 < len(data) and data[i+2].startswith("Model "):
        outfile.write(" ")
        outfile.write("\n")
        i=i+2;
    elif i+8 < len(data):
        targetline=data[i+8]
        outfile.write(targetline.split(" ")[0]+"\n")
        outfile2.write(targetline.split(" ")[2]+"\n")
        i=i+11;


count=0
sum=0.0
infile2=open("corr_ratios.txt","r")
data2=infile2.readlines()
for j,line in enumerate(data2):
    if data2[j]!=" ":
        count=count+1
        sum=sum+float(data[j])


mean=sum/count
print count,sum,mean
#/usr/bin/python2.7
填充=开放(“比率.dat”,“r”)
outfile=open(“corr_rations.txt”、“wb”)
outfile2=打开(“corr_ratios2.txt”、“wb”)
数据=infle.readlines()
i=0
而i
这里是我自己的错误。在代码底部的最后一个if语句中,我访问了sum等式中的“data”数组,而不是“data2”数组

应该是:

for j,line in enumerate(data2):
    if data2[j]!=" ":
        count=count+1
        sum=sum+float(data2[j])

无限循环必须发生在while循环内<代码>i已初始化为0。while循环旋转,直到我到达数组的边界。对于每次迭代,如果
i+2
没有超出范围,并且当前行以“Model”开头,则将i前进2。否则,如果
i+8
不会溢出边界,则将
i
前进11。因此,如果这两个条件都不成立,while循环将永远不会终止

我认为在这个区块中可能需要一个其他条件:

else:
    i += 1

如果
i=len(data)-2
,会发生什么?我不完全确定。if语句的这一部分的目的是允许程序在没有任何错误的情况下到达输入文件的末尾。这就是问题所在吗?对于特定的
i
,您将陷入一个无限循环中。我在尝试找出输入文件必须是什么样的过程中获得了更多乐趣。但是,非常严肃地说,我认为您应该考虑是否可以迭代这些行,或者使用数据列表作为堆栈。如果不查看输入,就很难更具体。您能描述文件
rations.dat
的格式或内容吗?如果
i+2
处的行不是以
“Model”
开头,并且
i+8>=len(data)
将无休止地循环,但是需要输入文件格式来确定避免这种情况的最佳方法。我包括了一个else:break条件,该条件允许脚本无错误地执行。希望通过更多的练习,我能看到无限循环发生的地方。谢谢你的建议。