Python ens proporciona un mòdul estàndard anomenat pickle
que ens permet emmagatzemar qualsevol
objecte Python en un fitxer i recuperar-ho posteriorment. Es diu que l'objecte
es guarda persistentment.
Hi ha un altre mòdul anomenat cPickle
, amb el mateix
funcionament de pickle
però escrit en llenguatge C de
manera que funciona més de 100 cops més ràpid.
Malgrat podem fer servir qualsevol dels dos mòduls, aquí usarem el
cPickle
. Per simplicitat ens referirem a tots dos mòduls
com pickle
.
La paraula pickle
dóna una idea de
conserva dins de l'idioma anglès. En aquest text
mantindrem el mot original per evitar confusions.
Example 12.2. Pickling i Unpickling
#!/usr/bin/python # Filename: pickling.py import cPickle as p #import pickle as p shoplistfile = 'shoplist.data' # el nom del fitxer on guardarem l'objecte shoplist = ['apple', 'mango', 'carrot'] # Escrivim al fitxer f = file(shoplistfile, 'w') p.dump(shoplist, f) # bolquem l'objecte al fitxer f.close() del shoplist # eliminem shoplist # Tornem a llegir l'objecte emmagatzemat f = file(shoplistfile) storedlist = p.load(f) print storedlist
En primer lloc notem l'ús de la sintaxi import..as
per a canviar el nom del mòdul. És quelcom útil per a fer a referir-nos
al mòdul amb un nom més curt, però també, com passa en aquest cas, per
a permetre'ns que la resta del codi faci servir indiferentment qualsevol
dels dos mòduls (cPickle
o pickle
)
simplement canviant el comentari. Així, a la resta del programa
simplement ens referim al mòdul amb p
.
Per a guardar l'objecte al fitxer, primer obrim el fitxer en mode
escriptura. A continuació escrivim l'objecte amb la funció
dump
del mòdul pickle
.
D'aquest procés en diem pickling.
A continuació recuperem l'objecte fent servir la funció
load
del mòdul pickle
. D'aquest
procés en diem unpickling.