我正在尝试更改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文件时,标题中的关键字值不会更改。为什么会这样?
答案 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实例不与磁盘实例交互。您必须保存新文件或明确覆盖旧文件。