Открытие массива имен файлов с помощью 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' в заголовке второго блока каждого файла. Я надеюсь, что это полезно.