Cómo usar Pickle para guardar objetos en Python

Dos filas de pepinillos

Imágenes de Paul Taylor/Getty





Pickle, que forma parte de la biblioteca de Python de forma predeterminada, es un módulo importante siempre que necesite persistencia entre sesiones de usuario. Como módulo, pickle permite guardar objetos de Python entre procesos.

Ya sea que esté programando para un base de datos , juego, foro o alguna otra aplicación que deba guardar información entre sesiones, pickle es útil para guardar identificadores y configuraciones. El módulo pickle puede almacenar cosas como tipos de datos como booleanos, cadenas y matrices de bytes, listas, diccionarios, funciones y más.



Nota: El concepto de decapado también se conoce como serialización, serialización y aplanamiento. Sin embargo, el objetivo es siempre el mismo: guardar un objeto en un archivo para recuperarlo más tarde. Pickling logra esto escribiendo el objeto como un largo flujo de bytes.

Código de ejemplo de Pickle en Python

Para escribir un objeto en un archivo, utiliza un código en la siguiente sintaxis:



|_+_|

Así es como se ve un ejemplo del mundo real:

|_+_|

Este fragmento escribe el contenido de objeto_pi al archivo controlador file_pi , que a su vez está vinculado al archivo nombre_archivo_pi.obj en el directorio de ejecución.

Para restaurar el valor del objeto en la memoria, cargue el objeto desde el archivo. Suponiendo que pickle aún no se haya importado para su uso, comience por importarlo:

|_+_|

El siguiente código restaura el valor de pi:



|_+_|

El objeto está entonces listo para su uso una vez más, esta vez como objeto_pi2 . Por supuesto, puede reutilizar los nombres originales, si lo prefiere. Este ejemplo utiliza nombres distintos para mayor claridad.

Cosas para recordar sobre la salmuera

Tenga en cuenta estas cosas cuando use el módulo pickle:



  • El protocolo pickle es específico de Python; no se garantiza que sea compatible entre idiomas. Lo más probable es que no pueda transferir la información para que sea útil en Perl, PHP, Java u otros lenguajes.
  • Tampoco hay garantía de compatibilidad entre diferentes versiones de Python. ILa incompatibilidad existe porque el módulo no puede serializar todas las estructuras de datos de Python.
  • De forma predeterminada, se utiliza la última versión del protocolo pickle. Permanece así a menos que lo cambie manualmente.

Consejo: también averiguar cómo usar estantería para guardar objetos en Python para otro método de mantener la continuidad del objeto.