在下面的代码中,我想要打印“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 :(得分:0)
这是因为i+n
可以并且将大于lines
列表的长度。
for i,line in enumerate(lines):
该枚举会从i
到0
为len(lines) - 1
创建值,因此i
的最大值为len(lines) - 1
。
以下几行告诉我们n
的值可以从1
到len(lines) - 1
,因此n
的最大值再次为len(lines) - 1
:
for n in range(1,len(lines)):
if "first" in lines[i+n]:
break
因此,i + n
的价值可以从1
到2 * (len(lines) - 1)
- 这就是您获得IndexError
的原因。