我正在尝试将新卡插入/附加到FITS文件的现有标头(PRIMARY标头(中。使用下面的代码,我可以在终端上看到我"成功"执行了此操作。但当我在DS9中打开FITS文件并检查标题信息时,我的新卡不存在。所以我的行动没有被挽救。我在这里错过了什么?
from astropy.io import fits
with fits.open('my.fits') as hdul:
hdr = hdul[0].header
hdr.append(('NEWCARD', 'value', 'A comment.'), end=True)
hdul.info()
print(repr(hdr))
提前感谢!
另外,创建一个新的标题并将我的新卡附加在那里会更好吗?没有必要回答这个问题,我只是好奇。由于我是处理fit文件的新手,我想知道这是否是一种更好的方法。
实际上,您的代码并没有保存更新后的文件。您必须使用更新模式并调用.flush()
:
from astropy.io import fits
with fits.open('my.fits', mode='update') as hdul:
hdr = hdul[0].header
hdr.append(('NEWCARD', 'value', 'A comment.'), end=True)
hdul.flush() # changes are written back to original.fits
https://docs.astropy.org/en/latest/io/fits/#save-文件更改