2013-03-13 164 views
-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()    

回答

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

+0

如何解决它?我试图使用len(行)-1,但仍然出现错误 – 2013-03-13 05:50:29

+1

我不明白你的代码,如果你会解释它,也许我会找到方式帮助您解决问题。 – aga 2013-03-13 06:16:14