我會誠實地承認我曾問過一個較早的相關問題,但我從那以後找到了一個解決方案,另一個問題!我遍歷一個列表來搜索一個大文本文件。搜索涉及獲取第一個列表條目並使用該字符串(數字)通過搜索該條目的文本文件。該腳本工作正常,直到最後一次迭代/最後一個列表條目,其中我收到以下錯誤cmd窗口...雖然Python while循環沒有正確退出,但是在上次迭代中出現'Out of range'錯誤
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
看來,雖然NUM < = LEN(頁框):功能不工作,並且一旦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開始的,而len是一個計數,也就是從1開始。將它改爲'while num
Nathaniel
應該是'while num
dawg
有沒有原因讓你不要只爲幀列表中的幀進行操作:並避免所有與'num'有關的東西?另外'[framelist [num]]:'中的單詞是一個完成一次的循環,所以除非外部的'[]'是虛假的,否則可能是一個賦值'word = framelist [num]'。 – Duncan