遵循Q here 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'
发布于 2021-03-08 02:53:32
对不起,这是不可能的,因为目前的情况。xr.open_dataset需要一个URL或一个本地路径,fsspec可以将其转换为开放的类似文件的对象。open_local的任务是处理URL并将字符串返回给本地副本--所以它不太适合。fcgrib处理打开的类似文件的对象,尝试从它们中提取本地路径并(重新)打开它。
在fsspec中有一个函数是合理的,它可以做open_local所做的事情,但返回一个打开的文件。参见fsspec-reference-maker上的讨论,了解我们如何通过临时复制到本地来处理(许多)远程grib2s的打开。
https://stackoverflow.com/questions/66512985
复制相似问题