Открытие массива имен файлов с помощью 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 ответа

Менять

data=pyfits.open(files)

в

data=pyfits.getdata(file)

это должно работать

редактировать: если вы хотите, чтобы ваши печатные отчеты тоже работали, вы должны сделать:

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

и затем, чтобы получить каждый бит данных отдельно, просто получите data[i], чтобы получить i-й элемент в списке,

edit2: Вы уверены, что вы выполняете это в правильном пути? (что ваши файлы не хранятся где-то по другому пути? - не уверен, что fits+2 также является правильным расширением)

Edit3: если вы получаете IOError, это, вероятно, связано с вашими именами файлов или около того, подходит +2? если ваш.py файл с написанным вами кодом не находится в том же каталоге, что и ваши данные, вам нужен полный путь, чтобы он мог найти файл

Ваш 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)

Во-первых, pyfits не любит указывать единицу измерения файла в формате: "+2". Единица может быть указана по-другому, в зависимости от данных, которые мы должны получить. В моем случае правый палец был:

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

где файлы - это массив, в котором указано имя подходящих файлов (опять же, без "+2"). Таким образом, массив данных будет хранить шесть значений ключевого слова 'TSTART' в заголовке второго блока каждого файла. Я надеюсь, что это полезно.

Другие вопросы по тегам