3

我在一个 URL 上有一个 .fits 文件,我想读入 Python,就好像它就在我的机器上一样。我试过的是:

import urllib2 as url, astropy.io.fits as fits
target_url = 'https://s3.amazonaws.com/bdnyc/spex_prism_U50171_0835%2B19_chiu06.fits'
obj = url.urlopen(target_url)
dat = fits.open(obj)

但我只是得到IOError: File-like object does not have a 'write' method, required for mode 'ostream'.

即使我设置mode='readonly'fits.open()说它不能写入类似文件的对象。

有没有办法从 URL 打开 .fits 文件?或者将返回的 .fits 文件字节转换urlopen()回 HDUList?

4

1 回答 1

2

根据 的文档astropy.io.fits.open,它可以选择从 URL 读取 .fits 文件的内容:

缓存:布尔,可选

如果文件名是 URL,则使用 download_file 打开文件。这指定是否将文件本地保存在 Astropy 的下载缓存中(默认值:True)。

这意味着您不必使用urllib2. 您可以立即喂食target_url,因为它会在打开 URL 之前fits.open调用它。astropy.utils.data.download_file请参阅下面的代码。

In [1]: import astropy.io.fits as fits

In [2]: target_url = 'https://s3.amazonaws.com/bdnyc/spex_prism_U50171_0835%2B19_chiu06.fits'

In [3]: dat = fits.open(target_url)

In [4]: dat
Out[4]: [<astropy.io.fits.hdu.image.PrimaryHDU at 0x219a9e8>]
于 2015-09-18T03:37:22.067 回答