执行代码时出错

时间:2013-03-13 05:43:05

标签: python python-2.6

在下面的代码中,我想要打印“first”之间的行,并在那些行中搜索“new.txt”行..当我运行时我得到一个错误:

if "first" in lines[i+n]:
IndexError: list index out of range

我的代码:

def find_path(self):
        f = open("/output",'w')
        for line in self.logs:
            f.write(line)
        f = open('/output','rb')
        lines = f.readlines()
        for i,line in enumerate(lines):    
            if "first" in line:
                pattern = line
                for n in range(1,len(lines)):
                    if "first" in lines[i+n]:
                        break
                    else: 
                        if "new.txt" in line:
                            print line
                        print lines[i+n]
        f.close()               

1 个答案:

答案 0 :(得分:0)

这是因为i+n可以并且将大于lines列表的长度。

for i,line in enumerate(lines):    

该枚举会从i0len(lines) - 1创建值,因此i的最大值为len(lines) - 1

以下几行告诉我们n的值可以从1len(lines) - 1,因此n的最大值再次为len(lines) - 1

for n in range(1,len(lines)):
    if "first" in lines[i+n]:
        break  

因此,i + n的价值可以从12 * (len(lines) - 1) - 这就是您获得IndexError的原因。