1

所以我有一个压缩的适合文件,我读起来像这样:

File = bz2.BZ2File(fname)
fits = File.read()

我正在使用 astropy.io.fits 来读取 fit 文件。目前我通过 api 获得我的 .fits.bz2 文件,所以我希望能够像阅读它们一样hdulist = fits.open(fit)

但它只是抛出TypeError: must be encoded string without NULL bytes, not str。(我已经通过手动解压缩并像上面那样阅读它来检查文件是否完好)。

我想我的问题是一个普遍的问题:如何将打开的文件传递给另一个函数?

4

1 回答 1

4

从您的文档astropy可以发现:

astropy.io.fits.open将文件名、打开的文件或类似文件的对象作为第一个参数

您正在尝试将文件中的内容传递到astropy,而不是文件对象本身。

为了让您的示例正常工作,您只需将返回的文件对象传递给bz2astropy,它将像未压缩文件一样处理它。

from astropy.io import fits
import bz2

decompressed_file = bz2.BZ2File("example.fits.bz2")
hdulist = fits.open(decompressed_file)
于 2015-01-26T10:45:33.057 回答