如何在 fits 文件中保存和添加新的 fits header
How to save and add new fits header in fits file
我有一个 fits 文件,我想添加一个新的 header 到 fits 文件。
我实际上已经添加了一个新的 fits header 但它没有保存它。如何保存和添加新的配合 header?
代码在这里:
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)
提前致谢
open()
默认以 read-only 模式打开 FITS 文件。如果您想就地修改文件,您需要使用 mode='update'
打开它。此外,附加新的 header 可以在一行中完成(如 Header.append
中所述,例如:
with open('example.fits', mode='update') as hdul:
hdul[0].header.append(('GAIN', 0.12, 'e-/ADU'))
或者,如果您已经在 read-only 模式下打开了一个 FITS 文件,您可以使用提到的 writeto 方法将修改后的文件写入 new 文件here.
我在您的原始示例中注意到的一个警告是您正在打开一个 gzip 压缩的 FITS 文件。如果可以在 'update'
模式下修改,我实际上并不确定我的头脑,在这种情况下你肯定需要写入一个新文件。我相信它 确实 有效,所以尝试一下,但我忘记了它的测试效果如何。
我没有 50 点声望来评论@Iguananaut 的回答,所以我会在这里留下我的评论:确保它是 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()
将在每次 运行 代码时附加相同的 'new' 卡片。为防止这种情况,我建议进行小幅调整。它不仅会添加您想要的新卡片,而且如果您多次 运行 代码,它还会更新同一张卡片,避免卡片倍数。
with fits.open('example.fits', mode='update') as hdul:
hdr = hdul[0].header
hdr['GAIN'] = (0.12, 'e-/ADU')
我有一个 fits 文件,我想添加一个新的 header 到 fits 文件。
我实际上已经添加了一个新的 fits header 但它没有保存它。如何保存和添加新的配合 header?
代码在这里:
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)
提前致谢
open()
默认以 read-only 模式打开 FITS 文件。如果您想就地修改文件,您需要使用 mode='update'
打开它。此外,附加新的 header 可以在一行中完成(如 Header.append
中所述,例如:
with open('example.fits', mode='update') as hdul:
hdul[0].header.append(('GAIN', 0.12, 'e-/ADU'))
或者,如果您已经在 read-only 模式下打开了一个 FITS 文件,您可以使用提到的 writeto 方法将修改后的文件写入 new 文件here.
我在您的原始示例中注意到的一个警告是您正在打开一个 gzip 压缩的 FITS 文件。如果可以在 'update'
模式下修改,我实际上并不确定我的头脑,在这种情况下你肯定需要写入一个新文件。我相信它 确实 有效,所以尝试一下,但我忘记了它的测试效果如何。
我没有 50 点声望来评论@Iguananaut 的回答,所以我会在这里留下我的评论:确保它是 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()
将在每次 运行 代码时附加相同的 'new' 卡片。为防止这种情况,我建议进行小幅调整。它不仅会添加您想要的新卡片,而且如果您多次 运行 代码,它还会更新同一张卡片,避免卡片倍数。
with fits.open('example.fits', mode='update') as hdul:
hdr = hdul[0].header
hdr['GAIN'] = (0.12, 'e-/ADU')