我正在尝试使用astropy hdu.writeto永久更改拟合头,已将“ None”添加到拟合文件中

时间:2018-09-11 13:40:30

标签: astropy fits

我想

  1. 读取适合文件
  2. 更改一些标题
  3. 将所做的更改保存到新的fits文件中。

到目前为止,我认为我已经实现了这一点,但是当我执行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()的内容,但这使我感到困惑。

谢谢

1 个答案:

答案 0 :(得分:2)

那是因为您正在打印从.info()返回的内容。请注意第四行

hdulist.info()

没有print,但是您得到了期望的输出。此外,您确实会得到

0 PRIMARY 1 PrimaryHDU 287 (1024, 1024) float32 

致电new.info()时。综上所述,方法本身会打印,默认情况下可能不返回任何内容或返回None,并且由于您print,它会显示为字符串。

只需删除最后的print