答案的以下部分由熟悉 astropy 代码库的同事提供。
查看astropy
源代码,明确排除在属于 HIERARCH 关键字的值中使用 CONTINUE 卡。
在源代码中我们发现(astropy/io/fits/card.py#L1227-1236):
keywordvalue_length = len(keyword) + len(delimiter) + len(value)
if (keywordvalue_length > self.length and
keyword.startswith('HIERARCH')):
if (keywordvalue_length == self.length + 1 and keyword[-1] == ' '):
output = ''.join([keyword[:-1], delimiter, value, comment])
else:
# I guess the HIERARCH card spec is incompatible with CONTINUE
# cards
raise ValueError('The keyword %s with its value is too long' %
self.keyword)
该评论来自 2011 年,并在重新设计 pyfits 时被放在那里。在此之前,pyfits 还可以独占读取或写入 HIERARCH 卡或带有 CONTINUE 语句的卡,显然它是这样保持的。相关的旧 PyFITS 代码是:
if cardimage[:8].upper() == 'HIERARCH':
card = _HierarchCard()
# for card image longer than 80, assume it contains CONTINUE card(s).
elif len(cardimage) > Card.length:
card = _ContinueCard()
但是,根据我的感觉,HIERARCH 并没有特别的理由将长值与 CONTINUE 排除在外。
到目前为止,我的同事给出了答案,他最后建议在 astropy 问题跟踪器中创建票证。
我自己也做了一些研究。HIERARCH 和 CONTINUE 关键字都不是官方FITS 标准的一部分(Pence, WD et al. 2010, Astronomy & Astrophysics Vol. 524, A42)。Wiecencec, A. 等人给出了 HIERARCH 关键字约定
。2009 年,“ESO HIERARCH 关键字约定”)和 CONTINUE 约定由HEASARC FITS 工作组,2007 年。“CONTINUE 长字符串关键字约定”。仔细阅读这两个定义,我完全没有理由认为它们应该相互排斥。因此,我在 astropy 问题跟踪器中创建了一个问题。
编辑:
正如Iguananaut的回答中提到的那样——它们确实是互斥的似乎有一个原因,即 HIERARCH 卡正式不包含任何价值......疯狂但真实,因此我认为我的回答是不正确的.