Python 3.x nc.variables[i]。从netcdf文件提取数据时,单位显示错误

Python 3.x nc.variables[i]。从netcdf文件提取数据时,单位显示错误,python-3.x,netcdf4,Python 3.x,Netcdf4,nc.variables[i]。单位显示找不到错误属性。我正在尝试从netcdf文件中提取数据。如何提取特定经度或纬度的数据 from netCDF4 import Dataset nc=Dataset("test.nc",'r') for i in nc.variables: print(i,nc.variables[i].units,nc.variables[i].shape) lat=nc.variables['lat'][:] print(lat) 结果如下: are

nc.variables[i]。单位显示找不到错误属性。我正在尝试从netcdf文件中提取数据。如何提取特定经度或纬度的数据

from netCDF4 import Dataset

nc=Dataset("test.nc",'r')

for i in nc.variables:

    print(i,nc.variables[i].units,nc.variables[i].shape) 

lat=nc.variables['lat'][:]
print(lat)
结果如下:

area meter2 (128, 256)
lat degrees_north (128,)
Traceback (most recent call last):
File "C:\Users\harsh\Desktop\cv\test_netcdf.py", line 7, in <module>
print(i,nc.variables[i].units,nc.variables[i].shape) #nc.variable[i].units
File "netCDF4\_netCDF4.pyx", line 4303, in 
netCDF4._netCDF4.Variable.__getattr__
File "netCDF4\_netCDF4.pyx", line 4114, in 
netCDF4._netCDF4.Variable.getncattr
File "netCDF4\_netCDF4.pyx", line 1392, in netCDF4._netCDF4._get_att
File "netCDF4\_netCDF4.pyx", line 1857, in 
netCDF4._netCDF4._ensure_nc_success
AttributeError: NetCDF: Attribute not found

请仔细查看此部分

for i in nc.variables:

    print(i,nc.variables[i].units,nc.variables[i].shape) 
在这个for循环中,i不是整数。由于这是作为for each循环进行计算的,因此它表示当前变量,而不是该变量所在的索引。你有几个选择

选项一:使用范围

for i in range(len(nc.variables)):

    print(i,nc.variables[i].units,nc.variables[i].shape) 
选项二:使用zip来引用变量和整数 正如巴特所指出的,枚举是一种更好的方法。见下面他的评论

for i, variable in zip(range(len(nc.variables)), nc.variables):

    print(i, variable.units, variable.shape) 
选项三:避免完全使用i

for variable in nc.variables:

    print(variable.units, variable.shape) 

另一种选择:对于i,enumeratenc中的变量。variables:,它比zip版本略短,但基本上是一样的。@Bart哦,对了,我总是忘记enumeratex。在我的回答中添加了对你的引用,干杯。