首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在fits文件中保存和添加新的fits头

如何在fits文件中保存和添加新的fits头
EN

Stack Overflow用户
提问于 2019-08-22 14:42:36
回答 2查看 1.6K关注 0票数 0

我有一个fits文件,我想在fits文件中添加一个新的头。

我实际上增加了一个新的fits头,但它没有保存它。如何保存和添加新的配合头?

这里的代码:

代码语言:javascript
复制
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)

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-23 09:03:14

默认情况下,open()以只读模式打开FITS文件.如果您想修改文件的位置,您需要用mode='update'打开它。另外,可以在一行中追加新的头(如Header.append中所记录的那样):

代码语言:javascript
复制
with open('example.fits', mode='update') as hdul:
    hdul[0].header.append(('GAIN', 0.12, 'e-/ADU'))

或者,如果您已经在只读模式下打开了一个FITS文件,则可以使用上述的这里方法将修改后的文件写入新文件。

我在您最初的示例中注意到的一个警告是,您正在打开一个gzipped文件。实际上,我不确定是否可以在'update'模式下修改它,在这种情况下,您肯定需要写入一个新文件。我相信它是有效的,所以试一试,但我忘记了这是多么好的测试。

票数 1
EN

Stack Overflow用户

发布于 2020-10-09 16:58:56

对于@Iguananaut的回答,我没有50点的评论,所以我将把我的评论留在这里:确保它是fits.open()。否则,它将给出以下错误ValueError: invalid mode: 'update'

使用@Iguananaut的例子,应该是:

代码语言:javascript
复制
with fits.open('example.fits', mode='update') as hdul:
    hdul[0].header.append(('GAIN', 0.12, 'e-/ADU'))

此外,每次运行代码时,使用append()都会附加相同的“新”卡。为了防止这种情况发生,我建议稍加调整。它不仅会添加你想要的新卡,而且如果你多次运行代码,它也会更新相同的卡,避免卡的倍数。

代码语言:javascript
复制
with fits.open('example.fits', mode='update') as hdul:
    hdr = hdul[0].header
    hdr['GAIN'] = (0.12, 'e-/ADU')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57611913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档