Printing the Header of a FITS file with astropy: NameError: name 'header' is not defined

Printing the Header of a FITS file with astropy: NameError: name 'header' is not defined

我正在尝试通过 http://docs.astropy.org/en/stable/io/fits/

通过 astropy 学习使用 FITS 操作

我正在按照本网站上的说明进行操作。 他们是:

"To see the entire header as it appears in the FITS file (with the END card and padding stripped), simply enter the header object by itself, or print(repr(header))"

但是当我键入 header 时,出现以下错误:

NameError: name 'header' is not defined

我在输入 print(header)print(repr(header)) 命令时遇到同样的错误。

我的问题是为什么 "header" 命令不起作用?

我应该以某种方式定义它吗?

我的代码:

from astropy.io import fits
hdulist = fits.open('test1.fits')
hdulist.info()
header

我正在通过 Canopy 使用 jupyter notebook。

My question is why is it that the "header" command did not work?

Am I supposed to define it somehow?

简而言之:它不是命令,您不需要定义它。它实际上是一个属性,因此您必须在 hdulist.

上查找它

hdulist包含hdu,每个hdu包含一个data和一个header,所以要访问header您使用的第一个 hdu:

print(repr(hdulist[0].header))

[0]是因为我想要第一个HDU(python使用zero-based索引)而.header访问这个HDU的header属性.

尽管我说你不需要定义它,但是你可以定义一个名为header的变量:

header = hdulist[0].header   # define a variable named "header" storing the header of the first HDU
print(repr(header))  # now it's defined and you can print it.

hdulist.info() 应显示存在多少个 HDU,因此您可以决定要打印或存储哪一个。

请注意,您应该始终使用 open 作为上下文管理器,以便它自动关闭文件(即使出现错误):

from astropy.io import fits

with fits.open('test1.fits') as hdulist:  # this is like the "hdulist = fits.open('test1.fits')"
     hdulist.info()
     for hdu in hdulist:
         print(repr(hdu.header))
# After leaving the "with" the file closes.

此示例还展示了如何使用 for 循环遍历 HDUList 中的所有 HDU。