-2

在下面的代码中,我想打印“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()               
4

1 回答 1

0

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

for i,line in enumerate(lines):    

该枚举为ifrom 0to创建值len(lines) - 1,因此 的最大值ilen(lines) - 1

以下几行告诉我们 的 值n可以是从1len(lines) - 1,所以 的最大值又nlen(lines) - 1

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

所以,价值i + n可以是从12 * (len(lines) - 1)——这就是你得到的原因IndexError

于 2013-03-13T05:46:03.510 回答