Persistencia de datos de Python: serialización de objetos

El objeto de archivo incorporado de Python devuelto por la función open () incorporada de Python tiene una deficiencia importante. Cuando se abre con el modo 'w', el método write () acepta solo el objeto de cadena.

Eso significa que, si tiene datos representados en cualquier forma que no sea de cadena, el objeto de clases integradas (números, diccionario, listas o tuplas) u otras clases definidas por el usuario, no se puede escribir en un archivo directamente. Antes de escribir, debe convertirlo en su representación de cadena.

numbers=[10,20,30,40]
   file=open('numbers.txt','w')
   file.write(str(numbers))
   file.close()

Para un archivo binario, argumento para write()El método debe ser un objeto de byte. Por ejemplo, la lista de enteros se convierte a bytes porbytearray() función y luego se escribe en el archivo.

numbers=[10,20,30,40]
   data=bytearray(numbers)
   file.write(data)
   file.close()

Para volver a leer los datos del archivo en el tipo de datos correspondiente, es necesario realizar una conversión inversa.

file=open('numbers.txt','rb')
   data=file.read()
   print (list(data))

Este tipo de conversión manual, de un objeto a formato de cadena o byte (y viceversa) es muy engorroso y tedioso. Es posible almacenar el estado de un objeto Python en forma de flujo de bytes directamente en un archivo o flujo de memoria y recuperar su estado original. Este proceso se llama serialización y deserialización.

La biblioteca integrada de Python contiene varios módulos para el proceso de serialización y deserialización.

No Señor. Nombre y descripción
1

pickle

Biblioteca de serialización específica de Python

2

marshal

Biblioteca utilizada internamente para la serialización

3

shelve

Persistencia de objetos pitónicos

4

dbm

biblioteca que ofrece interfaz a la base de datos Unix

5

csv

biblioteca para el almacenamiento y recuperación de datos de Python en formato CSV

6

json

Biblioteca para serialización a formato JSON universal