2010-09-16 6 views
5

Je suis en train de mettre en œuvre un outil utilisateur Unix qui doit stocker un hachage sur le disque. Le hachage sera lu à chaque exécution du programme, assez fréquemment. Le hash doit stocker uniquement les valeurs "name: path".Manière efficace de stocker le dictionnaire (hachage) dans un fichier avec python?

J'ai regardé le module de bibliothèque standard bsddb pour python, mais je peux voir qu'il sera obsolète dans Python 3. J'ai également vu le module de bibliothèque standard pickle.

Je ne suis pas un mec python, alors quel est le moyen efficace pour la sérialisation de hachage et les opérations fréquentes d'ouverture/de lecture/fermeture?

Répondre

4

Je voudrais commencer par le module shelve et voir si ce n'est pas trop lent. Il fait exactement ce que vous voulez.

import shelve 

d = shelve.open('filename') 

d['name'] = 'path' 

d.close() 

ou de lire ce

d = shelve.open('filename') 

d = hash['name'] 

Il est essentiellement un wrapper autour de cornichon qui fournit une abstraction dictionnaire.

+0

+1 Cool, jamais entendu parler de ce module avant. -0.1 pour l'observation de 'hash', cependant. : o) ... ok, ça a été enlevé maintenant. –

+0

@ jellybean, quelque chose me semblait mal. changé à 'd' pour refléter le fait que c'est essentiellement un dict. bien regarder. – aaronasterling

0

J'utiliserais du cornichon pour voir si c'est assez rapide pour vos besoins.