我正在尝试使用 Python 2.7 的 pyFITS 模块打开一个 .fits 文件并从中读取数据。下面是我正在运行以尝试从文件中获取数据的代码片段:
location = raw_input("Locaiton of FITS file: ") """user input location for the file"""
hdulist = pyfits.open(location) """opens the .fits file (works properly)"""
print(repr(hdulist[0].header)) """printed values shown below, works properly"""
pyfits.getdata(location, hdulist[0].header['TOTVALS']) """does NOT work"""
我知道文件已正确打开;当我运行时print(repr(hdulist[0].header))
,控制台显示
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 69
warnings.warn(u'Output verification result:')
UserWarning: Output verification result:
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 73
warnings.warn(line, VerifyWarning)
VerifyWarning: Card 'CRDER1' is not FITS standard (invalid value string: nan). Fixed 'CRDER1' card to meet the FITS standard.
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 74
warnings.warn(u'Note: PyFITS uses zero-based indexing.\n')
UserWarning: Note: PyFITS uses zero-based indexing.
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 69
warnings.warn(u'Output verification result:')
UserWarning: Output verification result:
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 73
warnings.warn(line, VerifyWarning)
VerifyWarning: Card 'CRDER2' is not FITS standard (invalid value string: nan). Fixed 'CRDER2' card to meet the FITS standard.
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 74
warnings.warn(u'Note: PyFITS uses zero-based indexing.\n')
UserWarning: Note: PyFITS uses zero-based indexing.
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 69
warnings.warn(u'Output verification result:')
UserWarning: Output verification result:
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 73
warnings.warn(line, VerifyWarning)
VerifyWarning: Card 'CSYSER1' is not FITS standard (invalid value string: nan). Fixed 'CSYSER1' card to meet the FITS standard.
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 74
warnings.warn(u'Note: PyFITS uses zero-based indexing.\n')
UserWarning: Note: PyFITS uses zero-based indexing.
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 69
warnings.warn(u'Output verification result:')
UserWarning: Output verification result:
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 73
warnings.warn(line, VerifyWarning)
VerifyWarning: Card 'CSYSER2' is not FITS standard (invalid value string: nan). Fixed 'CSYSER2' card to meet the FITS standard.
Warning (from warnings module):
File "C:\Python27\lib\site-packages\pyfits\verify.py", line 74
warnings.warn(u'Note: PyFITS uses zero-based indexing.\n')
UserWarning: Note: PyFITS uses zero-based indexing.
然后打印
SIMPLE = T / file does conform to FITS standard
BITPIX = 32 / number of bits per data pixel
NAXIS = 2 / number of data axes
NAXIS1 = 4096 / length of data axis 1
NAXIS2 = 4096 / length of data axis 2
EXTEND = T / FITS dataset may contain extensions
COMMENT FITS (Flexible Image Transport System) format is defined in 'Astronomy
COMMENT and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H
DATE = '2014-01-27T07:17:01'
DATE-OBS= '2014-01-27T06:34:10.00'
TELESCOP= 'SDO/HMI'
INSTRUME= 'HMI_SIDE1'
WAVELNTH= 6173.0
CAMERA = 1
BUNIT = 'Gauss'
ORIGIN = 'SDO/JSOC-SDP'
CONTENT = 'MAGNETOGRAM'
QUALITY = 1024
QUALLEV1= 1073741824
HISTORY Polynomial Coefficients used for Doppler velocity correction: 8.071746e+
HISTORY 01 5.340511e-03 -2.036568e-06 -7.976842e-10
COMMENT De-rotation: ON; Un-distortion: ON; Re-centering: ON; Re-sizing: OFF; co
COMMENT rrection for cosmic-ray hits; dpath=/home/jsoc/cvs/Development/JSOC/proj
COMMENT /lev1.5_hmi/apps/; linearity=1 with coefficients updated on 2014/01/15;
COMMENT smooth=1; propagate eclipse bit from level 1; use of larger crop radius
COMMENT look-up tables
BLD_VERS= '-802'
HCAMID = 2
SOURCE = 'hmi.lev1_nrt[:#57580483,#57580411,#57580338,#57580272,#57580184,#575'
TOTVALS = 12841850
DATAVALS= 12841850
...remaining values omitted...
当我尝试时出现问题pyfits.getdata(location, hdulist[0].header['TOTVALS'])
。返回的错误信息是
Traceback (most recent call last):
File "C:\Users\User\Desktop\openFITS.py", line 34, in <module>
pyfits.getdata(location,hdulist[0].header['TOTVALS'])
File "C:\Python27\lib\site-packages\pyfits\convenience.py", line 181, in getdata
hdu = hdulist[extidx]
File "C:\Python27\lib\site-packages\pyfits\hdu\hdulist.py", line 166, in __getitem__
return super(HDUList, self).__getitem__(idx)
IndexError: list index out of range
print(len(hdulist))
返回 1;所以我知道索引 0 不应该超出范围。因此,问题是为什么我无法从 hdulist 中获取标题“TOTVALS”中的原始数据,即使其他一切似乎都运行良好。
在此先感谢您的帮助!