我会诚实地承认我曾问过一个早先的相关问题,但我已经找到了解决早期问题的方法,现在又遇到了另一个问题!我正在遍历列表来搜索大文本文件。搜索涉及获取第一个列表条目并使用该字符串(数字),它通过搜索该条目的文本文件。该脚本可以正常运行到最后一次迭代/最后一个列表条目,从而在cmd窗口中出现以下错误...
2014 Apr 25 09:46:58.884 [35] 0x5245 FFFF Rec rst 4444 A
18.84
2014 Apr 25 09:46:58.902 [81] 0x5245 FFFF Rec rst 4444 A
19.62
2014 Apr 25 09:46:58.944 [2B] 0x5245 FFFF Rec rst 4444 A
16.69
Traceback (most recent call last):
File "C:\MEAN_val.py", line 361, in <module>
duta()
File "C:\MEAN_val.py", line 120, in duta
for word in [framelist[num]]:
IndexError: list index out of range
Exception RuntimeError: RuntimeError('sys.meta_path must be a list of import hoo
ks',) in <bound method Workbook.__del__ of <xlsxwriter.workbook.Workbook object
at 0x0241F2F0>> ignored
似乎while num&lt; = len(framelist):函数不起作用,一旦num达到列表的长度,它就不会退出循环。
这是我的部分工作代码......
for root, subFolders, files in chain.from_iterable(os.walk(path) for path in paths):
for filename in files:
if filename.endswith('.txt'):
with open(os.path.join(root, filename), 'r') as fBMA:
searchlinesBMA = fBMA.readlines()
fBMA.close()
num = 0
while num<=len(framelist):
for i, line in enumerate(searchlinesBMA):
for word in [framelist[num]]:
if word in line:
keylineBMA = searchlinesBMA[i-2]
Rline = searchlinesBMA[i+10]
Rline = re.sub('[()]', '', Rline)
valueR = Rline.split()
split = keylineBMA.split()
if split[10] == 'A':
print keylineBMA
print valueR[3]
num+=1
break
感谢阅读, MikG
答案 0 :(得分:2)
您可以将代码更改为:
while num<len(framelist)
因为长度只是一个计数。如果你从零开始并转到(包括)长度,你将经历循环(长度+ 1)次
答案 1 :(得分:0)
决定使用以下代码干净地退出循环。无论如何,书面Excel匹配,所以仍然有点不确定为什么索引错误存在?
except IndexError:
pass
continue