-1

我有一个文件名数组,我想用 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”。问题出在哪里?

4

3 回答 3

2

改变

data=pyfits.open(files)

data=pyfits.getdata(file)

那应该工作

编辑:如果您希望您的打印语句也可以工作,您应该这样做:

data=[]
for file in files:
    data.append(pyfits.getdata(file))
print len(data)

而不是单独获取每一位数据,只需获取 data[i],即可获取列表中的第 i 个项目,

编辑2:您确定以正确的方式执行它吗?(您的文件没有存储在不同路径的某个地方?-不确定 fit+2 是否也是正确的扩展名)

Edit3:如果你得到一个 IOError,它可能与你的文件名有关,fits+2?如果您编写的代码的 .py 文件与数据不在同一目录中,则需要完整路径才能找到该文件

于 2013-07-05T12:27:25.363 回答
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)
于 2013-07-05T12:29:24.713 回答
0

首先是pyfits不喜欢用格式指定fits文件的单位:“+2”。根据我们需要检索的数据,可以以不同的方式指定单位。就我而言,正确的做法是:

data=[]
for file in files
    data.append(pyfits.getval(file, 'TSTART', 2))

其中files是一个数组,其中指定了适合文件的名称(同样,没有“+2”)。这样,数据数组就会将'TSTART'关键字的六个值存储在每个文件的第二单元的头部中。我希望这很有用。

于 2013-07-05T15:50:29.040 回答