我尝试编写一个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;或者为什么一般代码中断? 提前谢谢!
答案 0 :(得分:0)
"fil"+str(i)
是一个不是变量fil1
的字符串。所以你试图打开名为"fil1"
此外,范围不包括上限,因此即使它起作用,也不会打开这两个文件。
将fil1
和fil2
放入列表中:
l = [fil1, fil2]
for i, f in enumerate(l,1): # now i starts at 1