感谢您花时间帮助我!以下是我面临的问题。假设我正在阅读拟合图像的标题。其中一个标题卡是未定义的对象,我不知道如何处理它。
from astropy.io import fits as pf
hdu = pf.open('myfitsfile')
hdu.info()
img_hd= hdu[0].header
print(img_hd['IMAGEZPT'])
<astropy.io.fits.card.Undefined object at 0x109b35a20>
我在数千张图像上迭代运行我的代码,几乎所有图像都有一些值。 e.g。
hdu_base = pf.open(a_lof[38])
img_hd= hdu_base[0].header
print(img_hd['IMAGEZPT'])
23.61687
我只想为此分配一些其他值并继续。所以,我试过
if img_hd['IMAGEZPT'] == None:
img_hd['IMAGEZPT'] = base_ZPT #some value I know
print(img_hd['IMAGEZPT'])
但正如预期的那样,由于未定义关键字,因此无效。所以'==无'不起作用。关键字存在,但它未定义。
任何帮助将不胜感激! 最好, 阿比
答案 0 :(得分:0)
如果标题是AstroPy未定义
从astropy
导入未定义类from astropy.io.fits.card import Undefined, UNDEFINED
并像这样比较
if isinstance(img_hd['IMAGEZPT'], Undefined):
它将img_hd ['IMAGEZPT']实例的类型与未定义类型进行比较。
或者像那样
if img_hd['IMAGEZPT'] == UNDEFINED:
第二个选项应该更有效,因为它比较img_hd ['IMAGEZPT']的值而不是实例的类型。
如果HDU表中没有标题卡
只需替换
if img_hd['IMAGEZPT'] == None:
通过
if 'IMAGEZPT' not in img_hd:
in 关键字检查哈希表img_hd中是否存在条目'IMAGEZPT'。