Не удалось прочитать атрибут файла netcdf, так как имя атрибута содержит скобки


Я использую python-2.7 и модуль NetCDF4 для чтения файла netcdf. Мне нужно прочитать глобальный атрибут (Lat(Degrees.Cents_of_degrees)) из файла netcdf, который содержит скобки в его имени, но я не могу прочитать его. Что я делаю:

from netCDF4 import Dataset as NetCDFFile
filename = 'DDE30.2002.RG300004.nc'
nc = NetCDFFile(filename)
lat = nc.Lat(Degrees.Cents_of_degrees)

Но я понял вот что:

AttributeError: NetCDF: Attribute not found

Я пробовал использовать обратную косую черту перед скобками, но это не работает. здесь - файл netcdf.

2 2

2 ответа:

Я думаю, ты хочешь ... getncattr [ docs] . Вероятно, лучше не зависеть от частного метода, предложенного @M. T.

lat = nc.getncattr('Lat(Degrees.Cents_of_degrees)')

Это хак, который должен работать в вашем случае, но который я не рекомендую обобщать. Когда вы обращаетесь к атрибуту файла netCDF с помощью nc.myattribute, под капотом вы вызываете nc.__getattribute__('myattribute') (см. документацию ). Как вы можете видеть, входной атрибут здесь является строкой, и поэтому он более разрешителен, когда речь заходит о допустимых значениях. Нерасчлененные значения в имени метода указывают на то, что авторы этой библиотеки не хотели раскрывать эту функциональность.

Таким образом, что вы мог бы сделать это:

lat = nc.__getattribute__('Lat(Degrees.Cents_of_degrees)') 

, который назначит 44.120147251339418 lat.