pygrib的documentation显示了一个名为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文件,但如果有人想要编写代码,作者可以接受pull请求。不幸的是,我的研究重点已经转移了,我没有时间贡献自己。
发布于 2020-10-15 22:38:54
正如jasonharper所述,您可以使用pygrib.fromstring()。我自己也试过了,这很管用。
以下是文档的link。
https://stackoverflow.com/questions/61737401
复制相似问题