0
我有一百個文件,每個文件有三列。 在Python腳本,我提取三列的每個文件:從文件中提取數據時出現IndexError
for i in range(1,100)
# extract data
os.chdir('directory/to/files')
fileName = 'file'+str(i).dat
f = open(fileName)
c1 = [l.split()[0] for l in f]
f.close()
f = open(fileName)
c2 = [l.split()[1] for l in f]
f.close()
f = open(fileName)
c3 = [l.split()[2] for l in f]
f.close()
doAnalysis()
令人驚奇地,我有一個IndexError
在迭代15在上面的代碼說的線12指向:list index out of range
。 我認爲Python是考慮到我的file15.dat具有小於3列,所以我加了這只是前行12:
if i==15:
c3IF = []
for l in f:
print(len(l.split())
c3IF.append(l.split()[2])
的c3IF
列表似乎包含file15.dat的第三列完全和L。 split總是長度爲3.我不明白爲什麼理解列表c3在特定的迭代中失敗,而另外兩個理解列表沒有。
當你做循環方法的正常時,它不會失敗嗎?它現在甚至失敗了嗎? –
嘗試添加'import pdb; pdb.set_trace()'正好在'c3'的賦值之上,並且看到'l'的值在那個點上。在前幾個循環中,通過鍵入'continue'(或者實際上,將其包裝在if語句中)跳過它。這樣可以消除由打印而不是檢查實際值產生的任何含糊之處。 – Joost