2013-11-15 40 views
1

我正在嘗試更改FITS文件標題中關鍵字的值。 相當簡單,這是代碼:更改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文件時,標題中的關鍵字值不會更改。爲什麼會發生?

回答

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 
1

您需要關閉文件,或者明確地刷新它,爲了寫更改回:

hdulist.close() 

hdulist.flush() 
+0

shx2,感謝,但它不會改變的結果。 –

0

有趣的是,有一個在astropytutorials該教程github上。這篇教程的ipython notebook viewer version解釋了這一切。

基本上,你注意到python實例不與磁盤實例交互。您必須保存一個新文件或明確覆蓋舊文件。