如何在 xarray 的后端添加 fsspec.open_local
Posted
技术标签:
【中文标题】如何在 xarray 的后端添加 fsspec.open_local【英文标题】:how to add fsspec.open_local in backend of xarray 【发布时间】:2021-03-07 03:43:08 【问题描述】:在此处关注 Q xarray read remote grib file on s3 using cfgrib
如何将以下代码转换为在 xarray 的 open_dataset
的 backend_kwargs
中使用。
import fsspec
import xarray as xr
uri = "simplecache::s3://mf-nwp-models/arpege-world/v2/2021-02-16/00/UGRD/10m/0h.grib2"
file = fsspec.open_local(uri, s3='anon': True, filecache='cache_storage':'/tmp/files')
ds = xr.open_dataset(file, engine="cfgrib")
到
ds = xr.open_dataset(
uri,
engine="cfgrib",
backend_kwargs=dict(s3="anon": True, filecache="cache_storage": "/tmp/files"),
)
但是得到ERROR:cfgrib.messages:Can't create file 'simplecache::s3://mf-nwp-models/arpege-world/v2/2021-02-16/00/UGRD/10m/0h.grib2.90c91.idx'
【问题讨论】:
【参考方案1】:抱歉,目前这是不可能的。 xr.open_dataset
需要一个 URL,fsspec 可以变成一个打开的类似文件的对象,或者一个本地路径。 open_local
的任务是处理 URL 并将字符串返回到本地副本 - 所以它不太适合。 fcgrib 通过尝试从中提取本地路径并(重新)打开它来处理打开的类似文件的对象。
在 fsspec 中有一个函数可以做open_local
所做的事情是合理的,但是交还一个打开的文件。请参阅 fsspec-reference-maker 上的讨论,了解我们如何通过在本地临时复制(许多)远程 grib2 来处理它们的打开。
【讨论】:
以上是关于如何在 xarray 的后端添加 fsspec.open_local的主要内容,如果未能解决你的问题,请参考以下文章
如何将点击的卡片按钮 id 传递给 vue.js 中的后端 URL 路径?