更改FITS文件标题中的关键字值

时间:2013-11-15 08:48:45

标签: python fits pyfits

我正在尝试更改FITS文件标题中关键字的值。 很简单,这是代码:

import pyfits

hdulist = pyfits.open('test.fits') # open a FITS file
prihdr = hdulist[1].header

print prihdr['AREASCAL']

effarea = prihdr['AREASCAL']/5.
print effarea
prihdr['AREASCAL'] = effarea

print prihdr['AREASCAL']

我多次打印这些步骤以检查值是否正确。他们是。 问题是,当我之后检查FITS文件时,标题中的关键字值不会更改。为什么会这样?

3 个答案:

答案 0 :(得分:1)

您需要关闭文件或显式刷新文件,以便将更改写回:

hdulist.close()

hdulist.flush()

答案 1 :(得分:1)

您正在以只读模式打开文件。这不会阻止您修改任何内存中的对象,但关闭或刷新文件(如此问题的其他答案中所建议的)将不会对文件进行任何更改。您需要以更新模式打开文件:

hdul = pyfits.open(filename, mode='update')

或者更好地使用with语句:

with pyfits.open(filename, mode='update') as hdul:
    # Make changes to the file...
    # The changes will be saved and the underlying file object closed when exiting
    # the 'with' block

答案 2 :(得分:0)

有趣的是,astropy tutorials github中有一个教程。以下是该教程的ipython notebook viewer version解释了所有内容。

基本上,您注意到python实例不与磁盘实例交互。您必须保存新文件或明确覆盖旧文件。