Python无需写入本地直接读取NDFD Grib二进制文件实现问题
错误原因
GRIB属于二进制格式文件,无文本编码属性,你之前对二进制内容调用decode()转为字符串的操作不符合格式要求,因此触发编码类报错。
解决方案
借助Python标准库io模块的BytesIO类,将请求获取的二进制内容直接包装为内存中的类文件对象,即可直接传入xarray读取,无需写入本地磁盘。
import pandas as pd import requests import xarray as xr import cfgrib from io import BytesIO r = requests.get( 'https://tgftp.nws.noaa.gov/SL.us008001/ST.opnl/DF.gr2/DC.ndfd/AR.neast/VP.001-003/ds.wspd.bin' ) # 二进制内容包装为内存类文件对象,直接读取 with BytesIO(r.content) as grib_file: xr_set = xr.load_dataset(grib_file, engine="cfgrib") windspeed_df = xr_set.to_dataframe()
BytesIO会将内存中的二进制数据模拟为标准磁盘文件对象,支持cfgrib读取时所需的所有文件操作,完全绕过本地磁盘IO流程。
内容的提问来源于stack exchange,提问作者nfick
相关产品推荐
相关产品推荐

