我有一个fits文件,我想在fits文件中添加一个新的头。
我实际上增加了一个新的fits头,但它没有保存它。如何保存和添加新的配合头?
这里的代码:
from astropy.io import fits
hdul = fits.open('example.fits.gz')[0]
hdul.header.append('GAIN')
hdul.header['GAIN'] = 0.12
hdul.header.comments['GAIN']="e-/ADU"
print(hdul.header)提前感谢
发布于 2019-08-23 09:03:14
默认情况下,open()以只读模式打开FITS文件.如果您想修改文件的位置,您需要用mode='update'打开它。另外,可以在一行中追加新的头(如Header.append中所记录的那样):
with open('example.fits', mode='update') as hdul:
hdul[0].header.append(('GAIN', 0.12, 'e-/ADU'))或者,如果您已经在只读模式下打开了一个FITS文件,则可以使用上述的这里方法将修改后的文件写入新文件。
我在您最初的示例中注意到的一个警告是,您正在打开一个gzipped文件。实际上,我不确定是否可以在'update'模式下修改它,在这种情况下,您肯定需要写入一个新文件。我相信它是有效的,所以试一试,但我忘记了这是多么好的测试。
发布于 2020-10-09 16:58:56
对于@Iguananaut的回答,我没有50点的评论,所以我将把我的评论留在这里:确保它是fits.open()。否则,它将给出以下错误ValueError: invalid mode: 'update'。
使用@Iguananaut的例子,应该是:
with fits.open('example.fits', mode='update') as hdul:
hdul[0].header.append(('GAIN', 0.12, 'e-/ADU'))此外,每次运行代码时,使用append()都会附加相同的“新”卡。为了防止这种情况发生,我建议稍加调整。它不仅会添加你想要的新卡,而且如果你多次运行代码,它也会更新相同的卡,避免卡的倍数。
with fits.open('example.fits', mode='update') as hdul:
hdr = hdul[0].header
hdr['GAIN'] = (0.12, 'e-/ADU')https://stackoverflow.com/questions/57611913
复制相似问题