的文档pygrib
显示了一个名为的函数,该函数fromstring
从表示二进制 grib 消息的 python 字节对象创建 gribmessage 实例。我可能会误解此功能的用途,但它让我相信我可以使用它来代替下载 GRIB 文件并open
在其上使用该功能。不幸的是,我尝试从 NLDAS2 打开多消息 GRIB 文件失败了。有没有人知道如何pygrib
在不先保存文件的情况下使用 GRIB 数据?我下面的代码显示了我希望它如何工作。相反,它给出了TypeError: expected bytes, int found
在线错误for grib in gribs:
from urllib import request
import pygrib
url = "<remote address of desired file>"
username = "<username>"
password = "<password>"
redirectHandler = request.HTTPRedirectHandler()
cookieProcessor = request.HTTPCookieProcessor()
passwordManager = request.HTTPPasswordMgrWithDefaultRealm()
passwordManager.add_password(None, "https://urls.earthdata.nasa.gov", username, password)
authHandler = request.HTTPBasicAuthHandler(passwordManager)
opener = request.build_opener(redirectHandler, cookieProcessor, authHandler)
request.install_opener(opener)
with request.urlopen(url) as response:
data = response.read()
gribs = pygrib.fromstring(data)
for grib in gribs:
print(grib)
编辑以添加整个错误输出:
Traceback (most recent call last):
File ".\example.py", line 19, in <module>
for grb in grbs:
File "pygrib.pyx", line 1194, in pygrib.gribmessage.__getitem__
TypeError: expected bytes, int found
编辑:此界面不支持多消息 GRIB 文件,但如果有人想编写代码,作者可以接受拉取请求。不幸的是,我的研究重点已经转移,我没有时间为自己做出贡献。