首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不下载文件的情况下使用pygrib打开GRIB文件?

如何在不下载文件的情况下使用pygrib打开GRIB文件?
EN

Stack Overflow用户
提问于 2020-05-12 03:06:45
回答 1查看 1K关注 0票数 3

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

代码语言:javascript
复制
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)

编辑以添加整个错误输出:

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

EN

回答 1

Stack Overflow用户

发布于 2020-10-15 22:38:54

正如jasonharper所述,您可以使用pygrib.fromstring()。我自己也试过了,这很管用。

以下是文档的link

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61737401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档