我有一个文件名数组,我想用pyfits打开每个文件。 所以我的代码应该是这样的:
import pyfits
files=array(["1131lc.fits+2","1132lc.fits+2","1134lc.fits+2","1136lc.fits+2","1137lc.fits+2","1138lc.fits+2"])
for file in files:
data = pyfits.open(files)
print data
print len(data)
但是这样,最后两个命令打印出来:“[]”和“0”。 问题在哪里?
答案 0 :(得分:2)
变化
data=pyfits.open(files)
到
data=pyfits.getdata(file)
应该有效
编辑:如果您希望您的printstatements也能正常工作,您应该这样做:
data=[]
for file in files:
data.append(pyfits.getdata(file))
print len(data)
而不是单独获取每一位数据,只需获取数据[i],以获得列表中的第i项,
EDIT2: 你确定你是在正确的道路上执行它吗? (你的文件不是存放在不同路径的某个地方? - 不确定是否适合+ 2是正确的扩展名)
Edit3:如果你得到一个IOError,它可能与你的文件名左右相关,适合+ 2?如果您编写的代码所在的.py文件与数据不在同一目录中,则需要完整路径才能找到该文件
答案 1 :(得分:1)
您的files
数组是数组中的数组。此外,您尝试将错误的参数传递给open()
(无论如何都应该getdata()
。)
import pyfits
files=["1131lc.fits+2","1132lc.fits+2","1134lc.fits+2","1136lc.fits+2","1137lc.fits+2","1138lc.fits+2"]
for file in files:
data = pyfits.getdata(file)
print data
print len(data)
答案 2 :(得分:0)
首先,pyfits不喜欢使用以下格式指定适配文件的单位:“+ 2”。 根据我们需要检索的数据,可以以不同的方式指定单位。 在我的情况下,正确的thig是:
data=[]
for file in files
data.append(pyfits.getval(file, 'TSTART', 2))
其中文件是指定了文件名称的数组(同样,没有“+2”)。 这样, data 数组会将'TSTART'关键字的六个值存储在每个文件的第二个单元的标题中。 我希望这很有用。