首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取压缩二进制文件(.grib2.bz2)

读取压缩二进制文件(.grib2.bz2)
EN

Stack Overflow用户
提问于 2020-10-21 04:03:10
回答 1查看 265关注 0票数 2

我已经从这个列表中下载了一个bz2压缩的文件https://opendata.dwd.de/weather/nwp/icon-eu/grib/03/t_2m/ (实际的文件名每天都会改变)。

我可以使用例如来读取解压缩的文件。

代码语言:javascript
复制
import xarray as xr
# cfgrib + dependencies are also required
grib1 = xr.open_dataset("icon-eu_europe_regular-lat-lon_single-level_2020101212_001_ASHFL_S.grib2", engine='cfgrib')

但是,我想读入压缩文件。

我试过这样的东西

代码语言:javascript
复制
with bz2.open("icon-eu_europe_regular-lat-lon_single-level_2020101818_002_ASWDIFD_S.grib2.bz2", "rb") as f:
    xr.open_dataset(f, engine='cfgrib')

但这是行不通的。

我正在寻找任何方法,以编程方式读取压缩文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-27 20:46:35

我在处理数值天气预报数据时也遇到了同样的问题。

我在这里所做的是下载文件并将其保存为二进制对象(例如,使用urlopenrequests)。将此对象传递给以下函数:

代码语言:javascript
复制
import bz2, shutil
from io import BytesIO
from pathlib import Path


def bunzip_store(file: BytesIO, local_intermediate_file: Path):
    with bz2.BZ2File(file) as fr, local_intermediate_file.open(mode="wb") as fw:
        shutil.copyfileobj(fr, fw)

解压缩后的文件将存储在local_intermediate_file下。现在你应该能够打开这个文件了。

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

https://stackoverflow.com/questions/64452549

复制
相关文章

相似问题

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