报头#
Header
#
- class astropy.io.fits.Header(cards=[], copy=False)[源代码]#
基类:
object
适合标题类。这个类同时公开dict类接口和list-like接口以适合头文件。
头可以按关键字索引,并且像dict一样,将返回相关的值。当标题包含具有重复关键字的卡片时,只返回第一张具有给定关键字的卡片的值。也可以使用2元组作为形式(keyword,n)的索引——如果存在重复的关键字,则返回带有该关键字的第n个值。
例如::
>>> header['NAXIS'] 0 >>> header[('FOO', 1)] # Return the value of the second FOO keyword 'foo'
标题也可以按卡号编制索引:
>>> header[0] # Return the value of the first card in the header 'T'
注释关键字(如HISTORY和COMMENT)是特殊情况:当用“HISTORY”或“COMMENT”索引头对象时,将返回所有历史/注释值的列表:
>>> header['HISTORY'] This is the first history entry in this header. This is the second history entry in this header. ...
有关使用标头的更多详细信息,请参阅Astropy文档。
笔记
尽管Fits关键字必须完全大写,但在
Header
对象不区分大小写。构建一个
Header
从iterable和/或文本文件。- 参数:
- add_blank(value='', before=None, after=None)[源代码]#
添加一张空白卡片。
- 参数:
- value :
str
,可选Python:字符串,可选 要添加的文本。
- before :
str
或int
,可选PYTHON:字符串或PYTHON:INT,可选 与中相同
Header.update
- after :
str
或int
,可选PYTHON:字符串或PYTHON:INT,可选 与中相同
Header.update
- value :
- add_comment(value, before=None, after=None)[源代码]#
添加
COMMENT
卡。- 参数:
- value :
str
Python :字符串 要添加的文本。
- before :
str
或int
,可选PYTHON:字符串或PYTHON:INT,可选 与中相同
Header.update
- after :
str
或int
,可选PYTHON:字符串或PYTHON:INT,可选 与中相同
Header.update
- value :
- add_history(value, before=None, after=None)[源代码]#
添加
HISTORY
卡。- 参数:
- value :
str
Python :字符串 要添加的历史文本。
- before :
str
或int
,可选PYTHON:字符串或PYTHON:INT,可选 与中相同
Header.update
- after :
str
或int
,可选PYTHON:字符串或PYTHON:INT,可选 与中相同
Header.update
- value :
- append(card=None, useblanks=True, bottom=False, end=False)[源代码]#
在头的末尾追加一个新的关键字+值卡,类似于
list.append
.默认情况下,如果标题中的最后一张卡片有注释关键字,这将在注释之前附加新关键字(除非新关键字也是注释)。
也不同于
list.append
因为它可以不带参数地调用:在本例中,一张空白卡片被附加到头的末尾。在这种情况下,所有关键字参数都被忽略。
- property cards#
构成此标头的底层物理卡;可以查看,但不应直接修改。
- property comments#
查看与每个关键字关联的注释(如果有)。
例如,要查看对NAXIS关键字的注释:
>>> header.comments['NAXIS'] number of data axes
也可以通过此界面更新注释:
>>> header.comments['NAXIS'] = 'Number of data axes'
- count(keyword)[源代码]#
返回标头中给定关键字的计数,类似于
list.count
如果Header对象被视为关键字列表。- 参数:
- keyword :
str
Python :字符串 要在标头中计数实例的关键字
- keyword :
- extend(cards, strip=True, unique=False, update=False, update_first=False, useblanks=True, bottom=False, end=False)[源代码]#
将多个关键字+值卡附加到标头的末尾,类似于
list.extend
.- 参数:
- cards : iterablePython:可迭代
一个iterable(关键字,值, [评论] )元组;参见
Header.append
.- strip : bool ,可选可选的布尔
删除任何只对特定类型的hdu有意义的关键字,以便只从扩展头或卡片列表中添加更一般的关键字(默认值:
True
)- unique : bool ,可选可选的布尔
如果
True
简单地确保没有重复的关键字被丢弃。例外是注释关键字(COMMENT、HISTORY等):只有当它们的值匹配时,它们才被视为重复项。- update : bool ,可选可选的布尔
如果
True
,使用输入标头中重复关键字中的值和注释更新当前标头。这将取代unique
争论。评论关键字的处理方式与unique=True
.- update_first : bool ,可选可选的布尔
如果头中的第一个关键字是“SIMPLE”,而输入标头中的第一个关键字是“XTENSION”,则“SIMPLE”关键字将替换为“XTENSION”关键字。同样,如果头中的第一个关键字是“XTENSION”,而输入标头中的第一个关键字是“SIMPLE”,则“XTENSION”关键字将替换为“SIMPLE”关键字。否则,对于结果头是有效的主头还是扩展头,这种行为是愚蠢的。这主要是为了支持与旧版本的向后兼容性
Header.fromTxtFile
方法,并且仅在以下情况下适用update=True
.- useblanks, bottom, end : bool ,可选可选的布尔
这些参数传递给
Header.append()
在页眉上添加新的卡片。
- classmethod fromfile(fileobj, sep='', endcard=True, padding=True)[源代码]#
类似
Header.fromstring()
,但从给定的文件(如对象或文件名)中读取头字符串。- 参数:
- fileobj :
str
, file-like objectPYTHON:字符串,PYTHON:类文件对象 从中读取FITS头的文件名或类似于打开文件的对象。对于打开的文件句柄,文件指针必须位于头的开头。
- sep :
str
,可选Python:字符串,可选 分隔线将卡片彼此分开的字符串,如换行符。默认情况下,没有卡片分隔符(就像在raw FITS文件中一样)。
- endcard : bool ,可选可选的布尔
如果为True(默认值),则页眉必须以结束卡结尾才能被视为有效。如果没有找到端卡
OSError
提高了。- padding : bool ,可选可选的布尔
如果为True(默认值),则需要将页眉填充为2880的倍数,即FITS header块大小。否则,将忽略任何填充或缺少填充。
- fileobj :
- 返回:
- classmethod fromkeys(iterable, value=None)[源代码]#
类似
dict.fromkeys()
--创建新的Header
从一个iterable关键字和一个可选的默认值。这种方法对于创建真实的FITS头文件可能不是特别有用,但是它对于测试是有用的。
- classmethod fromstring(data, sep='')[源代码]#
从包含整个标头数据的字节字符串创建HDU标头。
- 参数:
- 返回:
实例
>>> from astropy.io.fits import Header >>> hdr = Header({'SIMPLE': True}) >>> Header.fromstring(hdr.tostring()) == hdr True
如果要创建
Header
从打印文本来看,不必像在FITS文件中那样有精确的二进制结构,卡的长度为80字节。相反,每一张“卡片”可以换行结束,只要“看上去”适合标题,就不必填充到完整的卡片长度:>>> hdr = Header.fromstring("""\ ... SIMPLE = T / conforms to FITS standard ... BITPIX = 8 / array data type ... NAXIS = 0 / number of array dimensions ... EXTEND = T ... """, sep='\n') >>> hdr['SIMPLE'] True >>> hdr['BITPIX'] 8 >>> len(hdr) 4
- classmethod fromtextfile(fileobj, endcard=False)[源代码]#
从简单的文本文件或类似文件的对象中读取头。
等同于:
>>> Header.fromfile(fileobj, sep='\n', endcard=False, ... padding=False)
参见
- get(key, default=None)[源代码]#
类似
dict.get()
--返回与标头中关键字关联的值,如果找不到关键字,则返回默认值。
- insert(key, card, useblanks=True, after=False)[源代码]#
在给定位置将新的关键字+值卡插入头中,类似于
list.insert
.也可以相对于现有关键字插入新关键字,例如:
>>> header = Header({"NAXIS1": 10}) >>> header.insert('NAXIS1', ('NAXIS', 2, 'Number of axes'))
在现有关键字前插入,或:
>>> header.insert('NAXIS1', ('NAXIS2', 4096), after=True)
在现有关键字后插入。
- 参数:
- key :
int
,str
,或tuple
PYTHON:INT、PYTHON:STR或PYTHON:TUPLE 标题关键字列表中的索引,新关键字应在其前面插入,或新关键字应在其前面插入的关键字的名称。也可以接受一个(keyword,index)元组来插入重复的关键字。
- card :
str
,tuple
PYTHON:字符串,PYTHON:元组 关键字或(关键字,值, [评论] )元组;参见
Header.append
- useblanks : bool ,可选可选的布尔
如果页眉末尾有空白卡片,请更换第一张空白卡片,使页眉中的卡片总数不会增加。否则保留空白卡的数量。
- after : bool ,可选可选的布尔
- key :
- items()[源代码]#
喜欢
dict.items()
.
- keys()[源代码]#
喜欢
dict.keys()
--直接在Header
实例具有相同的行为。
- pop(*args)[源代码]#
作品像
list.pop()
如果没有提供参数或索引参数,则dict.pop()
.
- popitem()[源代码]#
类似
dict.popitem()
.
- remove(keyword, ignore_missing=False, remove_all=False)[源代码]#
从头中移除给定关键字的第一个实例,类似于
list.remove
如果Header对象被视为关键字列表。
- set(keyword, value=None, comment=None, before=None, after=None)[源代码]#
设置指定关键字的值和/或注释和/或位置。
如果标头中不存在关键字,则会在指定位置创建新关键字,如果未指定位置,则会将新关键字追加到标头的末尾。
这种方法类似于
Header.update()
在Astropy v0.1之前。备注
应该指出的是
header.set(keyword, value)
和header.set(keyword, value, comment)
相当于header[keyword] = value
和header[keyword] = (value, comment)
分别。- 参数:
- keyword :
str
Python :字符串 标题关键字
- value :
str
,可选Python:字符串,可选 要为给定关键字设置的值;如果没有,则保留现有值,但“”可用于设置空值
- comment :
str
,可选Python:字符串,可选 要为给定关键字设置的注释;如果没有,则保留现有注释,但是
''
可用于设置空白注释- before :
str
,int
,可选PYTHON:字符串,PYTHON:INT,可选 关键字的名称,或
Card
在此之前,此卡应位于页眉中。争论before
优先于after
如果两者都有规定。- after :
str
,int
,可选PYTHON:字符串,PYTHON:INT,可选 关键字的名称,或
Card
之后,该卡应位于页眉中。
- keyword :
- setdefault(key, default=None)[源代码]#
类似
dict.setdefault()
.
- tofile(fileobj, sep='', endcard=True, padding=True, overwrite=False)[源代码]#
将标头写入文件或类似文件的对象。
默认情况下,这会像写入FITS文件一样写入头文件,包括端卡并填充到下一个2880字节的倍数。然而,这方面的问题可能是可以控制的。
- 参数:
- fileobj : path-like object 或 file-like object ,可选Python:类似路径的对象或Python:类似文件的对象,可选
文件的路径名,或者打开的文件句柄或类似文件的对象。
- sep :
str
,可选Python:字符串,可选 用来分隔卡片的字符或字符串。默认情况下没有分隔符,但可以使用
'\\n'
,例如,用新行分隔每张卡- endcard : bool ,可选可选的布尔
如果
True
(默认)将结束卡添加到头字符串的末尾- padding : bool ,可选可选的布尔
如果
True
(默认)用空格将字符串填充到下一个2880个字符的倍数- overwrite : bool ,可选可选的布尔
如果
True
,覆盖输出文件(如果存在)。引发OSError
如果False
并且输出文件存在。默认为False
.
- tostring(sep='', endcard=True, padding=True)[源代码]#
返回标头的字符串表示形式。
默认情况下,它在卡片之间不使用分隔符,添加结束卡片,并用空格填充字符串,直到下一个2880字节的倍数。也就是说,它返回的头与在FITS文件中显示的完全一样。
- totextfile(fileobj, endcard=False, overwrite=False)[源代码]#
将标题作为文本写入文件或类似文件的对象。
等同于:
>>> Header.tofile(fileobj, sep='\n', endcard=False, ... padding=False, overwrite=overwrite)
参见
- update(*args, **kwargs)[源代码]#
用新关键字值更新标题,更新现有关键字的值,否则追加新关键字;类似于
dict.update
.update
接受dict-like对象或iterable。在前一种情况下,键必须是头关键字,并且值可以是标量值或(value,comment)元组。对于iterable,项必须是(keyword,value)元组或(keyword,value,comment)元组。还接受任意参数,在这种情况下,将再次调用update(),并将kwargs dict作为其唯一的参数。也就是说,
>>> header.update(NAXIS1=100, NAXIS2=100)
等于:
header.update({'NAXIS1': 100, 'NAXIS2': 100})
- values()[源代码]#
喜欢
dict.values()
.