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.
Deja un comentario