从文件中提取数据时的IndexError

时间:2015-08-03 11:05:47

标签: python

我有一百个文件,每个文件有三列。 在python脚本中,我为每个文件提取三列:

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()

令人惊讶的是,我在迭代15处有一个IndexError,指向上面代码的第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在特定迭代时失败而另外两个理解列表没有。

1 个答案:

答案 0 :(得分:0)

最终,我发现错误是在迭代16而不是在迭代15时引发的,而在long long file16.dat中,我有一行,其中第三列数据丢失,导致IndexError。