17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

268<br />

La bibliothèque standard<br />

TROISIÈME PARTIE<br />

shelve<br />

Utilisation de Pickler et Unpickler<br />

>>> from cPickle import Pickler, Unpickler<br />

>>> class MyClass(object):<br />

... def __init__(self, name):<br />

... self.data = [1, 2, 3]<br />

... self.name = name<br />

...<br />

>>> def load(objects):<br />

... f = Pickler(open('datas', 'w'))<br />

... for obj in objects:<br />

... f.dump(obj)<br />

...<br />

>>> def unload():<br />

... f = Unpickler(open('datas', 'r'))<br />

... objects = []<br />

... while 1:<br />

... try:<br />

... objects.append(f.load())<br />

... except EOFError:<br />

... break<br />

... return objects<br />

...<br />

>>> load([MyClass('1'), MyClass('2')])<br />

>>> objects = unload()<br />

>>> for obj in objects:<br />

... print(obj.name)<br />

...<br />

1<br />

2<br />

Le module shelve se base sur cPickle pour fournir un système de dictionnaire persistent.<br />

Ce dictionnaire est utilisé comme tout autre dictionnaire dans le programme<br />

et peut contenir tout objet pickable. Les données sont sauvegardées dans une base de<br />

données sur le système de fichiers.<br />

Le type de base de données utilisé est choisi automatiquement et dépend des bibliothèques<br />

installées sur le système, et peut être :<br />

une base dbm sous Unix ;<br />

une base GNU/dbm sous Unix ;<br />

une base Berkeley DB sous Unix et Windows.<br />

shelve fournit une fonction open() qui retourne une instance d’un tel dictionnaire.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!