如何使用pygrib打开GRIB文件而不首先下载该文件?

2024-05-12 22:15:52 发布

您现在位置:Python中文网/ 问答频道 /正文

pygribdocumentation显示了一个名为fromstring的函数,该函数从表示二进制grib消息的python字节对象创建gribmessage实例。我可能误解了此函数的用途,但它使我相信我可以使用它来代替下载GRIB文件并在其上使用open函数。不幸的是,我尝试从NLDAS2打开多消息GRIB文件失败。其他人知道如何在不保存文件的情况下对GRIB数据使用pygrib吗?下面的代码显示了我希望它如何工作。相反,它在for grib in gribs:行上给出了错误TypeError: expected bytes, int found

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文件,但如果有人想编写代码,作者可以接受拉取请求。不幸的是,我的研究重点已经转移,我没有时间贡献自己


Tags: 文件函数in消息forrequestusernamepassword