【发布时间】:2023-03-18 05:44:01
【问题描述】:
我已将文件上传到我的 Azure 文件存储帐户并创建了 SAS(共享访问签名)。让我们假设有问题的文件名为fileA.nc
现在,使用 Python3,我正在尝试阅读 fileA.nc:
from netCDF4 import Dataset
url ='https://<my-azure-resource-group>.file.core.windows.net/<some-file-share>/fileA.nc<SAS-token>';
dataset = Dataset(url)
print(dataset.variables.keys())
上面的代码不起作用,而是给我以下错误:
Traceback(最近一次调用最后一次):文件“yadaYadaYada/test.py”,行 8、在 dataset = Dataset(url) 文件“netCDF4/_netCDF4.pyx”,第 1848 行,在 netCDF4._netCDF4.Dataset.init (netCDF4/_netCDF4.c:13983) OSError: NetCDF: Malformed or unexpected Constraint
这是line 8:
dataset = Dataset(url)
我知道提供的 URL 有效。如果我将其粘贴到浏览器中,文件会下载...
我查看了netCDF4 documentation,上面写着:
可以访问远程 OPeNDAP 托管的数据集以进行读取 http 如果向 Dataset 构造函数提供 URL 而不是文件名。 但是,这需要使用 OPenDAP 构建 netCDF 库 支持,通过 --enable-dap 配置选项(在版本中添加 4.0.1)。
但是,我不知道如何判断 Pycharms 安装 netcdf4 时是否使用了--enable-dap argument,但我无法想象为什么它不会。此外,如果我坚持一个指向某个 HTML 的 url,我会在错误转储中获得 HTML,因此我认为 netcdf4 实际上是在尝试加载远程数据集,所以问题出在其他地方。
我真的很感谢这里的一些帮助。也许有人知道另一个允许我从 Azure 加载数据集的 Python 3 netCDF 库?
更新
好的,我现在可以confirm 知道 python netcdf4 库确实启用了 --OPenDAP:
您好,支持 OpenDAP 的 netCDF4 1.0.4 现已推出 Unix 上的 conda 存储库。安装:$ conda install netcdf4
- 宜兰
【问题讨论】:
-
嗨,我不确定这里与 OpenDAP 有什么关系?我没有使用过 Azure 存储,但我非常怀疑它是否会自动提供 OpenDAP 支持。而且,如果Azure允许直接打开文件,那么你也可以打开你的NetCDF文件,但如果它类似于AWS-s S3,那么你基本上应该先下载文件到本地磁盘然后打开。
标签: python-3.x azure netcdf