我想
到目前为止,我认为我已经实现了这一点,但是当我执行hdu.info()时,新的fits文件为“ None”。我很困惑这意味着什么,为什么它在那里,而且不好吗?
我将在下面的代码中粘贴相关的输出:
from astropy.io import fits
hdulist = fits.open('2D_comb_ff_wavcal_red_sci_2.fits')
hdu = hdulist[0]
hdulist.info()
Filename: 2D_comb_ff_wavcal_red_sci_2.fits No. Name Ver Type Cards Dimensions Format 0 PRIMARY 1 PrimaryHDU 287 (1024, 1024) float32
print 'CRVAL1 then = ', hdu.header['CRVAL1']
print 'CRVAL2 then = ', hdu.header['CRVAL2']
CRVAL1 then = 14975.1660156 CRVAL2 then = 1.0
CRVAL1_orig = hdu.header['CRVAL1']
CRVAL2_orig = hdu.header['CRVAL2']
hdu.header['CRVAL1'] = CRVAL2_orig
hdu.header['CRVAL2'] = CRVAL1_orig
print 'CRVAL1 now = ', hdu.header['CRVAL1']
print 'CRVAL2 now = ', hdu.header['CRVAL2']
CRVAL1 now = 1.0 CRVAL2 now = 14975.1660156
hdu.writeto('newheader.fits', overwrite=True)
new = fits.open('newheader.fits')
print new.info()
Filename: newheader.fits No. Name Ver Type Cards Dimensions Format 0 PRIMARY 1 PrimaryHDU 287 (1024, 1024) float32 None
标头已更新(我检查过),但为什么在这里说“无”? hdu.writeto()错误吗?我已经尝试阅读有关flush()的内容,但这使我感到困惑。
谢谢
答案 0 :(得分:2)
那是因为您正在打印从.info()
返回的内容。请注意第四行
hdulist.info()
没有print
,但是您得到了期望的输出。此外,您确实会得到
0 PRIMARY 1 PrimaryHDU 287 (1024, 1024) float32
致电new.info()
时。综上所述,方法本身会打印,默认情况下可能不返回任何内容或返回None
,并且由于您print
,它会显示为字符串。
只需删除最后的print
。