python np.genfromtxt迭代文件

时间:2014-08-15 13:50:22

标签: python

我尝试编写一个python脚本来读取两个文件中的数据,然后绘制一些列。这两个文件具有相同的格式(9列,100行)。我试图在" for"循环,为了保持代码更紧凑(例如,想象我有30个文件)。但是我的代码无法处理错误:

Traceback (most recent call last):
  File "./plot-test.py", line 19, in <module>
    np.genfromtxt(('fil'+str(i)), unpack = True, skip_header = 1)
  File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 1241, in genfromtxt
    fhd = iter(np.lib._datasource.open(fname, 'rbU'))
  File "/usr/lib/python2.7/dist-packages/numpy/lib/_datasource.py", line 145, in open
    return ds.open(path, mode)
  File "/usr/lib/python2.7/dist-packages/numpy/lib/_datasource.py", line 479, in open
    raise IOError("%s not found." % path)
IOError: fil1 not found.

所以这是我目前的代码:

#!/usr/bin/python

import numpy as np
import matplotlib.pyplot as plt


fil1 ='/home/aya/Arietids/test-GR/back-2h.dat' 
fil2 ='/home/aya/Arietids/test-GR/back-gr-2h.dat'

fig = plt.figure()

for i in xrange(1,2):
      t[i],JD[i],a[i],e[i],inc[i],lasc[i],aper[i],tru[i],nam[i] = \
      np.genfromtxt(('fil'+str(i)), unpack = True, skip_header = 1)

for i in xrange(2,2):
    plt.subplot(211)
    plt.plot(a[i-1] - a[i])

for i in xrange(2,2):
    plt.subplot(212)
    plt.plot(e[i-1] - e[i])

plt.xlabel("Time, 0 = present") 
plt.ylabel("$\Delta$ e")

plt.savefig('ae.eps')

任何想法为什么python无法找到&#34; fil1&#34;或者为什么一般代码中断? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

"fil"+str(i)是一个不是变量fil1的字符串。所以你试图打开名为"fil1"

的文件

此外,范围不包括上限,因此即使它起作用,也不会打开这两个文件。

fil1fil2放入列表中:

l  = [fil1, fil2]
for i, f in enumerate(l,1): # now i starts at 1