2016-02-05 62 views
0

我已經有一個寫好的文件(有人發給我),我想添加校驗和和datasum頭。我使用astropy.io.fits添加校驗和的唯一示例涉及在將每個部分添加到HDU時構建新的擬合HDU and verifying it。我可以做的,但似乎它會有更多的開銷,然後是需要的。Astropy將校驗和添加到現有的適合文件

有沒有辦法將校驗和和datasum添加到現有的HDU?

+0

檢查HDUList.writeto的文檔。 – Iguananaut

+0

@Iguananaut - 看來這需要重寫HDU。我想知道是否有一種方法可以在不重寫文件的情況下進行。它說:「使用提供的數據/標題創建一個新的FITS文件」http://astropy.readthedocs.org/en/stable/io/fits/api/files.html#astropy.io.fits.writeto – veda905

回答

4

ImageHDU對象有一個名爲add_checksum()的方法。這應該做你想要的。


所以你可以在更新模式下打開一個FITS文件,然後調用它並關閉文件。

from astropy.io import fits 

with fits.open(filename, mode='update') as hdus: 
    hdus[0].add_checksum() # Fill in the arguments like you need them 

with是首選,因爲它會自動close■當了with上下文退出(即使發生異常)的文件,但你也可以打開和關閉它沒有with

from astropy.io import fits 

hdul = fits.open(filename, mode='update') 
hdul[0].add_checksum() 
hdul.close() 
+0

我是很確定需要重寫HDU。我想知道是否有一種方法可以在不改寫HDU的情況下實現。 – veda905

+0

你的意思是:寫入校驗和和datasum而不寫入磁盤? – MSeifert

+0

不需要將所有數據重新寫入磁盤。我想計算這些值並更新標題關鍵字。 – veda905