[D]关于IndexError: list index out of range 的有关问题

[D]关于IndexError: list index out of range 的问题
我编了个小程序 读取文件数据,运行时总提示IndexError: list index out of range ,我仔细检查了,索引并没有越界啊,还有其他原因导致这个错误吗 代码太长了 贴出部分代码 希望大家帮忙看看 感激不尽  
Python code
    file1=open('%s' % mgt)    #从mgt文件中读取信息
    global line1
    line1=[]
    global line1num
    line1num=0
    for eachline in file1.readlines():
        line1.append(eachline)
        line1num+=1      
    global components
    components=[]
    global compnum
    compnum=0
    i=0
    cps=0
    cpo=0
    while i<line1num:
        if line1[i]=='*MEMBER    ; Member'+'\n':
            cps=i+1
            break
        i+=1
    cpt=cps
    if cpt!=0:
        while cpt<line1num:
            if line1[cpt]=='\n':
                cpo=cpt
                break
            cpt+=1
    j=0
    while cps<cpo:
        line1[cps]=line1[cps].strip()
        r=re.compile(',')
        comdata=[]
        comdata=r.split(line1[cps])
        components.append([])
        i=0
        while i<len(comdata):
            components[j].append(comdata[i])
            i+=1
        j+=1
        compnum+=1
        cps+=1
    for each in components:
        each.pop(1)
    file7=open('%s' % rcs1)    #从rcs文件中读取信息
    #此时line2不是全局变量
    line2=[]
    line2num=0
    for eachline in file7.readlines():
        line2.append(eachline)
        line2num+=1
    file7.close()
    combeamnum=0 
    line3=[] 
    line3num=0  
    line5=[]  
    line6=[]  
    line7=[] 
    line8=[] 
    i=0
    while i<line2num:
        if line2[i].count('kN, m')!=0:
            cb=i+1
            break
        i+=1    
    ct=cb     
    if ct!=0:
        while ct<line2num:
            if line2[ct].count('=')==3:
                line3.append(line2[ct])
                line3num+=1
            if line2[ct].count('=')==2:
                line3.append(line2[ct])
                line3num+=1
            if line2[ct].count('@')!=0:
                line3.append(line2[ct])
                line3num+=1    
            ct+=1    
    i=0
    while i<line3num:
        line3[i]=line3[i].strip()
        line3[i+1]=line3[i+1].strip()
        line3[i+2]=line3[i+2].strip()
        line3[i+3]=line3[i+3].strip()
        line3[i+4]=line3[i+4].strip()
        line3[i+5]=line3[i+5].strip()
        r=re.compile(' *')    #利用正则表达式,' *'对应' ','  ','   ','    '这一类
        line4data=[]
        line4data1=[]
        line4data2=[]
        line4data3=[]
        line4data4=[]
        line4data5=[]
        line4data=r.split(line3[i])
        line4data1=r.split(line3[i+1])
        line4data2=r.split(line3[i+2])
        line4data3=r.split(line3[i+3])
        line4data4=r.split(line3[i+4])
        line4data5=r.split(line3[i+5])
        line4data[2]=line4data[2].strip()
        line4data[2]=line4data[2].rstrip(',')
        line4data[5]=line4data[5].strip()
        line5.append([int(line4data[2])])
        line5[i].append(int(line4data[5]))
        line4data1[2]=line4data1[2].strip()
        line4data1[2]=line4data1[2].rstrip(',')
        line4data1[5]=line4data1[5].strip()
        line5.append([float(line4data1[2])])
        line5[i+1].append(float(line4data1[5]))
        line4data2[5]=line4data2[5].strip()
        line4data2[5]=line4data2[5].rstrip(',')
        line4data2[5]='HRB'+str(int(line4data2[5])/1000)
        line5.append([line4data2[5]])
        line4data3[5]=line4data3[5].strip()
        line4data3[6]=line4data3[6].strip()
        line4data3[6]=line4data3[6].split('-')
        line4data3[6][1]=line4data3[6][1].lstrip('d')
        line4data3[10]=line4data3[10].strip()
        line4data3[11]=line4data3[11].strip()
        line4data3[11]=line4data3[11].split('-')
        line4data3[11][1]=line4data3[11][1].lstrip('d')
        line5.append([float(line4data3[5])])
        line5[i+3].append(int(line4data3[6][0]))
        line5[i+3].append(int(line4data3[6][1]))
        line5[i+3].append(float(line4data3[10]))
        line5[i+3].append(int(line4data3[11][0]))
        line5[i+3].append(int(line4data3[11][1]))
        line4data4[5]=line4data4[5].strip()
        line4data4[6]=line4data4[6].strip()
        line4data4[6]=line4data4[6].split('-')
        line4data4[6][1]=line4data4[6][1].lstrip('d')
        line4data4[10]=line4data4[10].strip()
        line4data4[11]=line4data4[11].strip()
        line4data4[11]=line4data4[11].split('-')
        line4data4[11][1]=line4data4[11][1].lstrip('d')
        line5.append([float(line4data4[5])])
        line5[i+4].append(int(line4data4[6][0]))
        line5[i+4].append(int(line4data4[6][1]))
        line5[i+4].append(float(line4data4[10]))
        line5[i+4].append(int(line4data4[11][0]))
        line5[i+4].append(int(line4data4[11][1]))
        line4data5[5]=line4data5[5].strip()
        line4data5[6]=line4data5[6].strip()
        line4data5[6]=line4data5[6].split('-')
        line4data5[6][1]=line4data5[6][1].lstrip('d')
        line4data5[10]=line4data5[10].strip()
        line4data5[11]=line4data5[11].strip()
        line4data5[11]=line4data5[11].split('-')
        line4data5[11][1]=line4data5[11][1].lstrip('d')
        line5.append([float(line4data5[5])])
        line5[i+5].append(int(line4data5[6][0]))
        line5[i+5].append(int(line4data5[6][1]))
        line5[i+5].append(float(line4data5[10]))
        line5[i+5].append(int(line4data5[11][0]))
        line5[i+5].append(int(line4data5[11][1]))
        i+=6
    i=0
    j=0
    while j<len(line5):
        line6.append([])
        line6[i]=line5[j]+line5[j+1]+line5[j+2]+line5[j+3]    
        line7.append([])
        line7[i]=line5[j]+line5[j+1]+line5[j+2]+line5[j+4]
        line8.append([])
        line8[i]=line5[j]+line5[j+1]+line5[j+2]+line5[j+5]
        combeamnum+=1
        i+=1
        j+=6
        j=0
    print line6
    print len(line6)
    print combeamnum    
    print components
    print len(components)
    print compnum
    while j<combeamnum:
        if section[int(line6[j][1])-1][1]=='SB':   
            B=float(line6[j][2])                    
            H=float(line6[j][3])
            if B==0.1:
                B=0.1001
            if H==0.1:
                H=0.1001
            k=0 
            while k<compnum:
                if int(components[k][0])==int(line6[j][0]):    #根据单元来对应截面,然后求得等效截面
                    if len(components[k])==1:    #梁没有被分割
                        if int(line6[j][5])+int(line6[j][8])<int(line8[j][5])+int(line8[j][8]):
....下面还很长 不贴出来了 运行后 结果是
[[1, 1, 0.25, 0.5998, 'HRB335', 0.000297, 2, 20, 0.00029997, 2, 20], [2, 1, 0.25, 0.598, 'HRB335', 0.000501, 2, 20, 0.0002997, 2, 20], [3, 1, 0.25, 0.5998, 'HRB335', 0.0005001, 2, 20, 0.00029997, 2, 20], [4, 1, 0.25, 0.5998, 'HRB335', 0.0005001, 2, 20, 0.0002997, 2, 20], [5, 1, 0.25, 0.5998, 'HRB335', 0.00050001, 2, 20, 0.00040002, 2, 20], [6, 1, 0.25, 0.5998, 'HRB335', 0.0002997, 2, 20, 0.0002997, 2, 20], [7, 1, 0.25, 0.5998, 'HRB335', 0.000297, 2, 20, 0.0002997, 2, 20], [8, 1, 0.25, 0.59998, 'HRB335', 0.00998, 3, 20, 0.00029997, 2, 20]]
8
8
[['1', ' 571', ' 572'], ['2', ' 603', ' 604'], ['3', ' 635', ' 636'], ['4', ' 673', ' 674'], ['5', ' 559', ' 560'], ['6', ' 201'], ['7', ' 213'], ['8', ' 661', ' 662'], ['9', ' 544', ' 546'], ['10', ' 227'], ['11', ' 239'], ['12', ' 648', ' 650'], ['13', ' 543', ' 545'], ['14', ' 583', ' 584'], ['15', ' 615', ' 616'], ['16', ' 647', ' 649'], ['17', ' 570', ' 569'], ['18', ' 558', ' 557'], ['19', ' 542', ' 541'], ['20', ' 574', ' 573'], ['21'], ['22', ' 548', ' 547']]
22
22
Exception in Tkinter callback
Traceback (most recent call last):
  File "D:\Program Files\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
    return self.func(*args)
  File "C:/Users/caizhen/Desktop/M2A0404调试.py", line 9970, in r5progress
    compbeamsecbar()
  File "C:/Users/caizhen/Desktop/M2A0404调试.py", line 1869, in compbeamsecbar
    if int(components[k][0])==int(line6[j][0]):    #根据单元来对应截面,然后求得等效截面