所以我有一个压缩的fits文件,我是这样读的:
File = bz2.BZ2File(fname)
fits = File.read()
我正在使用astropy.io.fits读取fits文件。目前,我通过api获取.fits.bz2文件,因此理想情况下,我希望能够像hdulist = fits.open(fit)
一样读取它们。
但它只是抛出了TypeError: must be encoded string without NULL bytes, not str
。(我已经通过手动解压并像上面一样读取来检查文件是否正确)。
我想我的问题很普遍:如何将打开的文件传递给另一个函数?
发布于 2015-01-26 10:45:33
从astropy
的documentation中,您可以找到:
astropy.io.fits.open
以文件名、打开的文件或类似文件的对象作为其第一个参数
您正在尝试将文件中的内容传递到astropy
中,而不是传递到文件对象本身。
要让您的示例正常工作,您只需要将bz2
返回的文件对象传递给astropy,后者会像处理未压缩文件一样对其进行处理。
from astropy.io import fits
import bz2
decompressed_file = bz2.BZ2File("example.fits.bz2")
hdulist = fits.open(decompressed_file)
https://stackoverflow.com/questions/28146302
复制