2016-03-21 31 views
2

parantez içerdiğinden, netcdf dosyasını okumak için python-2.7 ve NetCDF4 modülünü kullanıyorum. Adında parantez içeren netcdf dosyasından global bir niteliği (Lat(Degrees.Cents_of_degrees)) okumalıyım, ancak okuyamıyorum. Ben ne:Netcdf dosya özniteliği okunamadı çünkü öznitelik adı

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

Ama bu olsun:

Ben parantez önce ters eğik çizgi kullanarak denedi ama çalışmıyor
AttributeError: NetCDF: Attribute not found 

. Here, netcdf dosyasıdır.

cevap

1

Bence getncattr [docs]. Muhtemelen en iyisi, @ M.T tarafından önerilen özel yönteme dayanmamaktır.

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

Teşekkürler, hack olmayan yöntem için @jhamman. –

0

Bu sizin durumunuz için çalışması gereken, ancak genelleştirmeyi önermediğim bir saldırıdır. nc.myattribute kullanarak netCDF dosyasının bir özelliğine eriştiğinizde, kapağın altında nc.__getattribute__('myattribute')'u arayın (bkz. documentation). Gördüğünüz gibi, giriş özniteliği bir dizedir ve bu nedenle izin verilen değerler söz konusu olduğunda daha izin vericidir. Metot adındaki undescores, bu kütüphanenin yazarlarının bu işlevselliği ortaya çıkarmak istemediğini gösterir.

Böylece, ne yapabilirdi geçerli: lat için 44.120147251339418 atar

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

.

+0

Çok teşekkürler. @ M.T! Beni çıldırtıyordu, ama sorunun kökeninden de görmedim. Büyük yardım :) –

+0

Gerçekten de bu bir hack. Uygun bir 'getattr' yöntemi vardır. Daha fazla bilgi için cevabımı görün. – jhamman

+0

@jhamman Katılıyorum. Cevabınız benim için tercih edilir. –

İlgili konular