【问题标题】:Read compressed binary file (.grib2.bz2)读取压缩的二进制文件 (.grib2.bz2)
【发布时间】:2021-02-03 17:13:28
【问题描述】:

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

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

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')

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

我尝试过类似

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')

但这不起作用。

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

【问题讨论】:

    标签: python compression binaryfiles grib


    【解决方案1】:

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

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

    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 下。现在你应该可以打开这个文件了。

    【讨论】:

    • 不幸的是 GribMagic 消失了 - 我在哪里可以找到它?
    • 对不起,我不得不移动代码。另一位贡献者遇到了一些麻烦。但如果您需要更多相关信息,我可以为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    相关资源
    最近更新 更多