如何从astropy中的URL打开FITS文件?

时间:2015-09-18 03:10:03

标签: python urllib2 astropy

我在一个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(),它也说不能写入类似文件的对象。

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

1 个答案:

答案 0 :(得分:2)

基于documentation of astropy.io.fits.open,它可以选择从URL读取.fits文件的内容:

  

缓存:bool,可选

     

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

这意味着您不必使用urllib2。您可以立即将target_url提供给fits.open,因为它在打开之前会在URL上调用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>]