python np.genfromtxt 迭代文件
我正在尝试写一个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找不到“fil1”,或者为什么代码会出错呢?提前谢谢大家!
1 个回答
0
"fil"+str(i)
是一个字符串,而不是变量 fil1
。所以你实际上是在尝试打开一个名为 "fil1"
的文件。
另外,范围的上限是不包括在内的,所以即使这个方法能用,你也不会打开两个文件。
把 fil1
和 fil2
放在一个列表里:
l = [fil1, fil2]
for i, f in enumerate(l,1): # now i starts at 1