Python astropy.io.fits:如何将新卡附加到fits文件的头?

Python astropy.io.fits:如何将新卡附加到fits文件的头?,python,header,astropy,fits,Python,Header,Astropy,Fits,我正在尝试将新卡插入/附加到FITS文件的现有头(主头)。使用下面的代码,我可以在终端上看到我“成功”执行此操作。但是当我在DS9中打开FITS文件并检查标题信息时,我的新卡不存在。所以我的行为没有被保存。我错过了什么 from astropy.io import fits with fits.open('my.fits') as hdul: hdr = hdul[0].header hdr.append(('NEWCARD', 'value', 'A comment.'),

我正在尝试将新卡插入/附加到FITS文件的现有头(主头)。使用下面的代码,我可以在终端上看到我“成功”执行此操作。但是当我在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))
提前谢谢


另外,是否最好创建一个新的标题并将我的新卡附加到那里?没必要回答这个问题,我只是好奇而已。由于我是处理fits文件的新手,我想知道这是否是一种更好的方法。

事实上,您的代码并没有保存更新的文件。您必须使用更新模式并调用
.flush()

无需调用
hdul.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