我希望有人可以指出我哪里出错了。我希望遍历'mylist'列表以获取第一个条目并将第一个条目用作搜索字符串,然后执行搜索并在找到字符串后收集特定信息并将其发布到Excel工作表。然后我希望迭代到下一个“mylist”条目并执行另一次搜索。第一次迭代执行正常,但是在循环的第二次迭代中,我得到以下CMD窗口错误......
2014 Apr 25 09:43:42.080 INFORMATION FOR A
14.01
Traceback (most recent call last):
File "C:\TEST.py", line 362, in <module>
duta()
File "C:\TEST.py", line 128, in duta
if split[10] == 'A':
IndexError: list index out of range
Exception RuntimeError: RuntimeError('sys.meta_path must be a list of
import hooks',) in <bound method Workbook.__del__ of
<xlsxwriter.workbook.Workbook object at 0x0238C310>> ignored
这是我的代码......
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()
row_numBMAA+=1
num = 1
b = 1
print len(mylist)
print (mylist[num])
while b<len(mylist):
for i, line in enumerate(searchlinesBMA):
for word in [mylist[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[6] == 'A':
print keylineBMA
print valueR[3]
worksheetFILTERA.write(row_numBMAA,3,valueR[3], decimal_format)
row_numBMAA+=1
break
num+=1
b=+1
关于我做错了什么的任何想法?我的循环是不在位置,还是我没有输入正确的列表指针?
谢谢, MikG
答案 0 :(得分:2)
根据我的经验,此错误与无序收集垃圾有关。我在调试代码时看到过一次,其中有人用__del__
方法写入文件。 (馊主意)。我确定您收到了错误,因为您正在关闭with:
块内的文件,该块会为您执行open
和close
。
答案 1 :(得分:1)
第二次运行时,split = keylineBMA.split()
得到的结果比预期的要短。您尝试访问列表外的索引10。