Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
727 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  string dans un fichier netcdf

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

string dans un fichier netcdf

n°2229877
piploum
Posté le 03-06-2014 à 15:27:34  profilanswer
 

Bonjour,  
 
Je cherche à écrire en python des données dans un fichier de type NetCDF.
J'ai défini deux variables, l'une de type float, pas de problème, mais l'autre est de type string et je n'arrive pas à la mémoriser dans mon fichier.
J'ai pas mal cherché sur les forums spécialisés mais je n'ai rien trouvé de consistant sur ce point.
 
Mon bout de code est:

Code :
  1. NVal=cdms2.createVariable( (N.zeros((nvarmax,nlat, nlon)) ),
  2.                              typecode = cdms2.MV2.float32,
  3.                              id = "val",
  4.                              attributes=att_nval)


Code :
  1. NParam=cdms2.createVariable( (OPTIONS["VARS"]),
  2.                              typecode = 'string',
  3.                              id = "param",
  4.                              attributes=att_nparam)


 
et pour le fichier:

Code :
  1. fout = cdms2.open('NVar.nc','w')
  2. fout.write( NVal )
  3. fout.write( NParam )
  4. fout.close()


 
et le mesage d'erreur:

Code :
  1. Traceback (most recent call last):
  2.   File "<stdin>", line 1, in <module>
  3. TypeError: write() got an unexpected keyword argument 'type'
  4. >>> fout.write( NParam,'string' )
  5. cdunif: NetCDF: Not a valid data type or _FillValue type mismatch
  6. cdunif: NetCDF: Not a valid data type or _FillValue type mismatch
  7. Traceback (most recent call last):
  8.   File "<stdin>", line 1, in <module>
  9.   File "/home/share/unix_files/cdat/versions/cdat_install_trunk_x86_64_gcc4_03/lib/python2.5/site-packages/cdms2/dataset.py", line 1459, in write
  10.     id=varid, extend=extend, fill_value=fill_value, index=index)
  11.   File "/home/share/unix_files/cdat/versions/cdat_install_trunk_x86_64_gcc4_03/lib/python2.5/site-packages/cdms2/dataset.py", line 1391, in createVariableCopy
  12.     newvar = self.createVariable(newname, datatype, axislist)
  13.   File "/home/share/unix_files/cdat/versions/cdat_install_trunk_x86_64_gcc4_03/lib/python2.5/site-packages/cdms2/dataset.py", line 1179, in createVariable
  14.     raise CDMSError, "Creating variable "+name
  15. cdms2.error.CDMSError: Creating variable param


 
Merci d'avance

mood
Publicité
Posté le 03-06-2014 à 15:27:34  profilanswer
 

n°2230195
masklinn
í dag viðrar vel til loftárása
Posté le 07-06-2014 à 14:25:43  profilanswer
 

Regardes la doc de ton truc cdms2, clairement tu l'utilises mal. Genre tu donnes le typecode cdms2.MV2.float32 pour la première valeur mais la chaîne 'string' pour la seconde, ça te semble pas un poil incohérent?


---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°2230308
piploum
Posté le 10-06-2014 à 10:45:00  profilanswer
 

Bonjour, merci pour la réponse, mais... non  ;)  
L'équivalent en string ou char pour cdms2 ne fonctionne pas. Avec mon astuce, NParam est bien déclarée
De toute façon, comme je l'expliquais, le problème n'était pas là mais dans la dernière commande, pour la mémorisation dans le fichier ;)

n°2230336
fred1599
Posté le 10-06-2014 à 16:42:14  profilanswer
 

essaye typecode='c' au lieu de 'string'
 

n°2230424
piploum
Posté le 11-06-2014 à 11:58:19  profilanswer
 

Bonjour Fred, merci mais avec ta proposition j'ai alors le message d'erreur:

Code :
  1. Traceback (most recent call last):
  2.   File "<stdin>", line 7, in <module>
  3.   File "/home/share/unix_files/cdat/versions/cdat_install_trunk_x86_64_gcc4_03/lib/python2.5/site-packages/cdms2/tvariable.py", line 227, in __new__
  4.     order = order)
  5.   File "/home/share/unix_files/cdat/versions/cdat_install_trunk_x86_64_gcc4_03/lib/python2.5/site-packages/numpy/ma/core.py", line 2364, in __new__
  6.     _data = np.array(data, dtype=dtype, copy=copy, subok=True, ndmin=ndmin)
  7. ValueError: setting an array element with a sequence


 
Pour info, OPTIONS["VARS"] est un tableau de string: ["a0","a12", "a25", ...]
'string' ou 'S' avec ma ligne de commande fonctionne, NParam est alors bien créée


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  string dans un fichier netcdf

 

Sujets relatifs
fichier xml corrompu balise absentemême fichier .htaccess en prod et developement
[PHP] probleme #Ressource #Fichier sur manip image[BATCH] Génerer un fichier texte et écrire dedans [...]
[Script Shell] utilisation de la commande tarBase de données ou fichier de données ?
Enregistrer / charger un fichier en CQuel langage choisir pour traiter un fichier ?
Mon fichier traitement.php ne fonctionne pasValidation de fichier de conf en python
Plus de sujets relatifs à : string dans un fichier netcdf


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR