如何在Google Colab中用PyGRIB读取网页GRIB2文件
在Google Colab中读取远程NOAA GRIB2文件的解决方案
问题背景
读取NOAA提供的远程GRIB2文件时,遇到两类错误:
- 直接用
pygrib.open()传入URL触发OSError:pygrib不支持直接读取远程URL路径的文件 - 通过
urllib.request.urlopen()获取HTTPResponse后传入pygrib.open()触发TypeError:pygrib.open()仅支持本地文件路径字符串或字节对象,不兼容HTTPResponse类型
解决方案
核心是先将远程文件的二进制内容加载到内存,再用pygrib.fromstring()解析(该方法支持直接传入二进制数据)。
完整代码示例
import numpy import pygrib import requests # 目标GRIB2文件的远程链接 grib_url = 'https://www.ncei.noaa.gov/data/north-american-mesoscale-model/access/forecast/202212/20221216/nam_218_20221216_1200_000.grb2' # 发起请求获取文件二进制内容 response = requests.get(grib_url) response.raise_for_status() # 捕获请求失败的异常 grib_binary = response.content # 解析二进制GRIB数据 grbs = pygrib.fromstring(grib_binary) # 验证:打印第一个GRIB消息的键值 print(grbs[0].keys())
关键说明
- 二进制数据读取:使用
requests.get()的response.content获取文件二进制内容,比urllib更简洁易用 - 兼容pygrib的解析方式:
pygrib.fromstring()直接处理字节数据,绕过了本地文件路径或对象类型的限制 - 异常处理:
response.raise_for_status()确保请求失败时及时抛出异常,便于排查网络或文件访问问题
消除pyproj警告
若遇到pyproj unable to set database path警告,可在Colab中执行以下命令安装兼容版本:
!pip install pyproj==3.2.1
内容的提问来源于stack exchange,提问作者user3550783
相关产品推荐
相关产品推荐

