Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Python</strong> <strong>para</strong> <strong>todos</strong><br />
Pero, ¿y si hubiéramos guardado 30 objetos y quisiéramos acceder al<br />
último de ellos? ¿o si no recordáramos en qué posición lo habíamos<br />
guardado? El módulo shelve extiende pickle / cPickle <strong>para</strong> proporcionar<br />
una forma de realizar la serialización más clara y sencilla, en la<br />
que podemos acceder a la versión serializada de un objeto mediante<br />
una cadena asociada, a través de una estructura parecida a un diccionario.<br />
La única función que necesitamos conocer del módulo shelve es open,<br />
que cuenta con un parámetro filename mediante el que indicar la ruta<br />
a un archivo en el que guardar los objetos (en realidad se puede crear<br />
más de un archivo, con nombres basados en filename, pero esto es<br />
transparente al usuario).<br />
La función open también cuenta con un parámetro opcional protocol,<br />
con el que especificar el protocolo que queremos que utilice pickle por<br />
debajo.<br />
Como resultado de la llamada a open obtenemos un objeto Shelf, con<br />
el que podemos trabajar como si de un diccionario normal se tratase (a<br />
excepción de que las claves sólo pueden ser cadenas) <strong>para</strong> almacenar y<br />
recuperar nuestros objetos.<br />
Como un diccionario cualquiera la clase Shelf cuenta con mé<strong>todos</strong><br />
get, has_key, items, keys, values, …<br />
Una vez hayamos terminado de trabajar con el objeto Shelf, lo cerraremos<br />
utilizando el método close.<br />
import shelve<br />
animales = [“piton”, “mono”, “camello”]<br />
lenguajes = [“python”, “mono”, “perl”]<br />
shelf = shelve.open(“datos.dat”)<br />
shelf[“primera”] = animales<br />
shelf[“segunda”] = lenguajes<br />
print shelf[“segunda”]<br />
shelf.close()<br />
116