11.4. Encurtido

Para poner valores en un archivo, debe convertirlos en cadenas. Ya ha visto como hacerlo con str:

   1: >>> f.write (str(12.3))
   2: >>> f.write (str([1,2,3]))

El problema es que cuando vuelve usted a leer el valor, obtiene una cadena. Ha perdido la información del tipo de dato original. En realidad, no puede distinguir donde termina un valor y comienza el siguiente:




   1: >>> f.readline()
   2: '12.3[1, 2, 3]'

La solución es el encurtido, llamado así porque “conserva" estructuras de datos.


El modulo pickle contiene las ordenes necesarias. Para usarlo, importe pickle y luego abra el archivo de la forma habitual:




   1: >>> import pickle
   2: >>> f = open("test.pck","w")

Para almacenar una estructura de datos, use el metodo dump y luego cierre el archivo de la forma habitual:




   1: >>> pickle.dump(12.3, f)
   2: >>> pickle.dump([1,2,3], f)
   3: >>> f.close()

Ahora podemos abrir el archivo para leer y cargar las estructuras de datos que volcamos ahí:




   1: >>> f = open("test.pck","r")
   2: >>> x = pickle.load(f)
   3: >>> x
   4: 12.3
   5: >>> type(x)
   6: <type 'float'>
   7: >>> y = pickle.load(f)
   8: >>> y
   9: [1, 2, 3]
  10: >>> type(y)
  11: <type 'list'>

Cada vez que invocamos load obtenemos un valor del archivo, completo con su tipo original.

0