从 Python 中的 NetCDF MFDataset 获取变量属性

Getting variable attributes from NetCDF MFDataset in Python

我正在使用 MFDataset 在 python 3(在 Windows 上)加载多个 NetCDF 文件,我想遍历变量并查看属性。我能够很好地加载和读取数据,但是我想访问与变量关联的属性。

import netCDF4
file = r"C:\netcdf_files\data*.nc" #wildcarded NetCDF files

with netCDF4.MFDataset(file) as src:       
    for name, variable in src.variables.items():            
        for attrname in variable.ncattrs():
           print("{} -- {}".format(attrname, variable.getncattr(attrname)))

当上面的代码片段运行时,出现以下异常:

Traceback (most recent call last):
File "netCDF4\_netCDF4.pyx", line 5026, in netCDF4._netCDF4._Variable.__getattr__ (netCDF4\_netCDF4.c:57060)
KeyError: 'getncattr'

对于单个文件 NetCDF 文件,加载了数据集:

import netCDF4
file = r"C:\netcdf_files\data1.nc" #single, explicit file

with netCDF4.Dataset(file) as src:       
    for name, variable in src.variables.items():            
        for attrname in variable.ncattrs():
           print("{} -- {}".format(attrname, variable.getncattr(attrname)))

上面运行得很好,根据需要打印出变量属性。

我对使用 NetCDF 文件还是很陌生 - 有没有办法在使用 MFDataset 加载数据时访问变量属性? 谢谢!

看来getncattr功能在使用MFDataset时确实是不可用的。此解决方案似乎适用于 DatasetMFDataset:

import netCDF4

src = netCDF4.Dataset("drycblles.1.nc")

for name, variable in src.variables.items():            
    for attrname in variable.ncattrs():
        print("{} -- {}".format(attrname, getattr(variable, attrname)))
        # or :
        #print("{} -- {}".format(attrname, variable.getncattr(attrname))) 


src = netCDF4.MFDataset("drycblles.*.nc")

for name, variable in src.variables.items():            
    for attrname in variable.ncattrs():
        print("{} -- {}".format(attrname, getattr(variable, attrname)))

在这两种情况下,我得到相同的输出。