emploi de shelve

emploi de shelve - Python - Programmation

Marsh Posté le 25-01-2003 à 00:47:43    

salut a tous !
 je debute en python, et j'ai decouvert la persistence de shelve, qui, si je ne m'abuse est un excellent moyen de creer un fichier de configuration / initialisation.
 
j'essai de l'employer dans l'exemple épuré qui suit  

Code :
  1. #! /usr/bin/env python
  2. import  sys
  3. import shelve
  4. def  initshelve():
  5.         sh= shelve.open('modulr','w')
  6.         sh['allGUI']=      'miniGUI'
  7.         sh['selectedGUI']= 'miniGUI'
  8.         sh['allModul']=      ''
  9.         sh['selectedModul']= ''
  10.         sh.close()
  11. try:
  12.         sh= shelve.open('modulr')
  13. except IOError:
  14.         initshelve()
  15. print sh['allGUI']


si le fichier n'existe pas, il est créé, et les parametres semblent y etre.
 
puis je relance mon prog => erreur

Code :
  1. Traceback (most recent call last):
  2.   File "python\modul_R\modulr3.py", line 20, in ?
  3.     sh= shelve.open('modulr')
  4.   File "C:\Program Files\Python22\lib\shelve.py", line 158, in open
  5.     return DbfilenameShelf(filename, flag)
  6.   File "C:\Program Files\Python22\lib\shelve.py", line 148, in __init__
  7.     Shelf.__init__(self, anydbm.open(filename, flag))
  8.   File "C:\Program Files\Python22\lib\anydbm.py", line 83, in open
  9.     raise error, "db type could not be determined"
  10. error: db type could not be determined


de plus j'ai "des bugs" sur ma config:
quand j'ai une erreur, wpython n'apparait pas pour m'afficher une erreur comme ci dessus (le mode texte s'est fait la malle ?)
Idle m'affiche bien les erreurs, mais le repertoire courant semble rester le sien
=> execution du script ci dessus via Idle = fichier ajouté au dossier Idle, non au dossier du script
 
ma config: win2000 / python2.2.2  :)  
 
voilà, longue vie à Python [y a des forums python qui bougent pour les debutants, ou j'vais avoir le plaisir de revenir souvent vous voir ? :D  ;)  
       __FreD__

Reply

Marsh Posté le 25-01-2003 à 00:47:43   

Reply

Marsh Posté le 25-01-2003 à 01:36:31    

jamais utilisé shelve, désolé.
tu peux essayer sur la ml python de l'aful, elle est assez réactive

Reply

Marsh Posté le 25-01-2003 à 14:58:28    

le mode je suis pas sur que ça soit "w" pour write, c'est plutot l'implémentation sous jacente, dbm apr défaut je crois


Message édité par Taz le 25-01-2003 à 14:59:13
Reply

Marsh Posté le 25-01-2003 à 14:59:15    

lorill a écrit :

jamais utilisé shelve, désolé.
tu peux essayer sur la ml python de l'aful, elle est assez réactive

toujour a l'affut :)

Reply

Marsh Posté le 25-01-2003 à 15:02:15    

ben moi j'y comprends rien. tantot ca marche, tanto ca marche pas  :heink:

Reply

Marsh Posté le 26-01-2003 à 23:45:49    

j'ai peut etre trouvé:

Code :
  1. import  sys
  2. import shelve
  3. sh= shelve.open('modulr','c')           # cree si inexistant
  4. try:
  5.           a= sh['allGUI']             
  6. # la ligne ci-dessus teste l'existence de la variable
  7. # (y a sans doute plus propre pour verifier si le fichier vient d'etre cree)
  8.           print sh['allGUI'] # recuperation OK !  ;)
  9.           sh['allGUI']= 'jesuismodifie'
  10.           print sh['allGUI'] # modif idem ;)
  11. except KeyError:
  12.           print 'Creation de modulr !!' # mon fichier ini tout bo !
  13.           sh['allGUI']=      'miniGUI'
  14.           sh['selectedGUI']= 'miniGUI'
  15.           sh['allModul']=      ''
  16.           sh['selectedModul']= ''
  17.           print 'modulr cree !'
  18.           print sh['allGUI']
  19.          
  20. sh.close()


ça semble marché impec  :D  
 
 
sinon, vous programmez koi de bô en python ?
 
 
 
       

le

:bounce:

est le meilleur ami du smiling

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed