使用Fsspec创建S3对象本地缓存时出现open_local相关ValueError如何解决
错误原因
open_local 仅支持本身就是本地文件的系统调用,simplecache 包装后的文件系统不满足该属性要求,更换调用方式即可解决问题。同时你最初填写的 S3 路径重复了 blend.20211019/01/core 片段,需要先修正路径格式。
可用的URL格式及对应代码
你可以选择S3协议或者HTTP直链两种格式的URL,都可以实现本地缓存需求:
1. S3协议URL格式
正确URL为:simplecache::s3://noaa-nbm-grib2-pds/blend.20211019/01/core/blend.t01z.core.f001.co.grib2
对应调用代码:
import fsspec url = 'simplecache::s3://noaa-nbm-grib2-pds/blend.20211019/01/core/blend.t01z.core.f001.co.grib2' with fsspec.open(url, s3={'anon': True}, filecache={'cache_storage':'/tmp/files'}) as f: # f.name 就是缓存到本地的文件绝对路径,直接操作该路径和普通本地文件无差异 local_file_path = f.name
2. HTTP直链URL格式
正确URL为:simplecache::https://noaa-nbm-grib2-pds.s3.amazonaws.com/blend.20211019/01/core/blend.t01z.core.f001.co.grib2
对应调用代码:
import fsspec url = 'simplecache::https://noaa-nbm-grib2-pds.s3.amazonaws.com/blend.20211019/01/core/blend.t01z.core.f001.co.grib2' with fsspec.open(url, filecache={'cache_storage':'/tmp/files'}) as f: local_file_path = f.name
内容的提问来源于stack exchange,提问作者Zach Rieck
相关产品推荐
相关产品推荐

