从请求模块python下载数据时解码netCDF文件

问题描述

我正在尝试从 NASA GES DISC 下载 netCDF 文件。文本文件中有 1000 个 netCDF 文件链接,我想使用请求模块下载它。响应状态码是 200 但文件内容不是我想要的格式。我无法解码。

import requests
result = requests.get(myURL)
result.content.decode()

结果为 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte

文件内容以如下格式返回b'\x89HDF\r\n\x1a\n\x00\x00\x00\x00\x00\x08\x08\x00\x04\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff...

我如何解码结果。除了从 url 下载之外,还有其他选择吗?

解决方法

根据您的问题,您有一个提供 netCDF 文件链接的 url 列表,并且您想将它们全部下载。下面的代码向您展示了如何将其保存为临时文件:

import urllib
url = "ftp://ftp.cdc.noaa.gov/Datasets/COBE/sst.mon.ltm.1981-2010.nc"
new = "/tmp/tmp.nc"
urllib.request.urlretrieve(url,new)