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.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s