17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

266<br />

La bibliothèque standard<br />

TROISIÈME PARTIE<br />

cPickle<br />

cPickle offre un mécanisme de sérialisation des objets très puissant : tout objet en<br />

mémoire peut être sauvegardé sur le système de fichiers puis rechargé par la suite.<br />

cPickle est le grand frère du module pickle : il implémente à peu de choses près les<br />

mêmes fonctionnalités mais est codé en C, donc beaucoup plus rapide.<br />

cPickle est supérieur au module de fonctionnalités similaires marshal car il permet<br />

de sérialiser de manière transparente tout type de classe.<br />

Le mécanisme de sérialisation ne sauvegarde pas le code des fonctions ni les<br />

paramètres : une simple référence est conservée et il est nécessaire de pouvoir<br />

retrouver ces définitions lorsqu’un objet est dé-sérialisé.<br />

Les rares types d’objets ne pouvant être sérialisés par cPickle sont dits unpickable et<br />

sont les instances de socket, les pointeurs de fichiers et les threads. Les objets compatibles<br />

sont dit pickable.<br />

cPickle fournit deux types de fonctions pour sérialiser les objets :<br />

dump() et load(), pour une écriture et une lecture directe dans un objet de type<br />

fichier ;<br />

dumps() et loads(), pour récupérer et fournir les flux sous forme de string.<br />

dump(objet, fichier[, protocol])<br />

Sérialise l’objet. fichier est un objet qui doit présenter une méthode write(), utilisée<br />

par dump(). C’est en général un objet de type fichier (ouvert en écriture) ou assimilé,<br />

comme StringIO.<br />

protocol est un paramètre qui permet de déterminer la structure créée pendant la<br />

sérialisation. Avec une valeur à 0 par défaut, cette structure reste la même pour toutes<br />

les versions de Python passées ou à venir et assure ainsi une compatibilité ascendante.<br />

1 détermine une structure plus efficace et 2 la meilleure structure possible.<br />

Pour Python 2.4 et supérieur, la valeur 2 peut être récupérée par la variable<br />

cPickle.HIGHEST_PROTOCOL, qui détermine la valeur maximum pour la version courante,<br />

sachant que les prochaines versions introduiront certainement des valeurs supplémentaires.<br />

Une valeur négative est équivalente à cPickle.HIGHEST_PROTOCOL.<br />

load(fichier) -> objet<br />

Utilise l’objet fichier pour reconstruire l’objet sérialisé. fichier est un objet de type<br />

file ou assimilé qui doit fournir les méthodes read() et readlines().

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

Saved successfully!

Ooh no, something went wrong!