用pyfits打开文件名数组

时间:2013-07-05 12:22:56

标签: python pyfits

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

3 个答案:

答案 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'关键字的六个值存储在每个文件的第二个单元的标题中。 我希望这很有用。