Encurtidos de Python

Los encurtidos en Python son sabrosos en el sentido de que representan un objeto Python como una cadena de bytes. Se pueden hacer muchas cosas con esos bytes. Por ejemplo, puede almacenarlos en un archivo o base de datos, o transferirlos a través de una red. 

La representación en escabeche de un objeto Python se llama archivo de salmuera. Por lo tanto, el archivo encurtido se puede usar para diferentes propósitos, como almacenar resultados para ser usados ​​por otro programa Python o escribir copias de seguridad. Para obtener el objeto Python original, simplemente desentrañar esa cadena de bytes.

Para picar en Python, usaremos el conservar en vinagre módulo. Como se indica en la documentación:

El módulo pickle implementa protocolos binarios para serializar y deserializar una estructura de objetos Python. "Decapado" es el proceso mediante el cual una jerarquía de objetos de Python se convierte en un flujo de bytes, y la "descompresión" es la operación inversa, mediante la cual un flujo de bytes (de un archivo binario o un objeto similar a un byte) se convierte nuevamente en una jerarquía de objetos. El decapado (y el despeje) se conocen alternativamente como "serialización", "clasificación" o "aplanamiento"; sin embargo, para evitar confusiones, los términos utilizados aquí son "decapado" y "despeinado".

los conservar en vinagre módulo nos permite almacenar casi cualquier objeto de Python directamente a un archivo o cadena sin la necesidad de realizar ninguna conversión. Que conservar en vinagre módulo realmente realiza es lo que se llama serialización de objetos, es decir, convertir objetos hacia y desde cadenas de bytes. El objeto que se va a decapar se serializará en una secuencia de bytes que se pueden escribir en un archivo, por ejemplo, y restaurar en un punto posterior.

Instalación conservar en vinagre

los conservar en vinagre El módulo en realidad ya viene incluido con su instalación de Python. Para obtener una lista de los módulos instalados, puede escribir el siguiente comando en el indicador de Python: ayuda ('modulos').

Así que todo lo que necesitas hacer para trabajar con el conservar en vinagre módulo es para pepinillo de importación!

Creación de un archivo de salmuera

A partir de esta sección, veremos algunos ejemplos de decapado para comprender mejor el concepto. Comencemos creando un archivo pickle a partir de un objeto. Nuestro objeto aquí será el que hacer lista que hicimos en el tutorial de listas de Python.

todo = ['escribir entrada de blog', 'responder a correo electrónico', 'leer en un libro']

Para encurtir nuestro objeto de lista (que hacer), podemos hacer lo siguiente:

importar pickle todo = ['escribir entrada de blog', 'responder a correo electrónico', 'leer en un libro'] pickle_file = archivo ('todo.pickle', 'w') pickle.dump (todo, pickle_file)

Tenga en cuenta que hemos hecho un pepinillo de importación para poder usar el conservar en vinagre módulo. También hemos creado un archivo pickle para almacenar el objeto pickled, a saber: todo.pickle. los tugurio función escribe una representación en escabeche de que hacer al objeto de archivo abierto pickle_file. En otras palabras, la tugurio La función aquí tiene dos argumentos: el objeto a pickle, que es el que hacer lista, y un objeto de archivo donde queremos escribir el pickle, que es todo.pickle.

Descomprimiendo (restaurando) los datos en escabeche

Digamos que nos gustaría desentrañar (restaurar) los datos encurtidos; En nuestro caso, esta es la. que hacer lista. Para ello, podemos escribir el siguiente script:

importar pickle_file = archivo de archivo ('todo.pickle') todo = pickle.load (pickle_file) imprimir (todo)

El script anterior dará salida a la que hacer elementos de la lista:

['escribir entrada de blog', 'responder al correo electrónico', 'leer en un libro']

Como se menciona en la documentación, el cargar archivo) La función hace lo siguiente:

Lea una cadena del archivo de objeto de archivo abierto e interprétela como un flujo de datos de salmuera, reconstruyendo y devolviendo la jerarquía de objetos original. Esto es equivalente a Unpickler (archivo) .load ().

Pepinillos como cuerdas

En la sección anterior, vimos cómo podemos escribir / cargar pickles en / desde un archivo. Esto no es necesario, sin embargo. Quiero decir que si queremos escribir / cargar pepinillos, no siempre tenemos que tratar con archivos, sino que podemos trabajar con pepinillos como cadenas. Así podemos hacer lo siguiente:

importar pickle todo = ['escribir entrada de blog', 'responder al correo electrónico', 'leer en un libro'] pickled_data = pickle.dumps (todo) imprimir (pickled_data)

Tenga en cuenta que hemos utilizado el deshecho (con una "s" al final) función, que, según la documentación:

Devuelve la representación encurtida del objeto como una cadena, en lugar de escribirla en un archivo.

Con el fin de restaurar los datos decapados anteriores, podemos utilizar el cargas (cadena) función, de la siguiente manera:

restored_data = pickle.loads (pickled_data)

Según la documentación, lo que el cargas La función que hace es que:

Lee una jerarquía de objetos encurtidos desde una cadena. Los caracteres en la cadena más allá de la representación del objeto encurtido son ignorados.

Decapado de más de un objeto

En los ejemplos anteriores, hemos tratado el decapado y la restauración (carga) de un solo objeto a la vez. En esta sección, le mostraré cómo podemos hacer eso para más de un objeto. Digamos que tenemos los siguientes objetos:

name = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dictionary tup = (31, 'abder', 4.0) # tuple

Si desea obtener más información sobre los diccionarios y tuplas de Python, consulte los siguientes tutoriales:

  • Una actualización suave en los diccionarios de Python
  • Un refrescante suave en las tuplas de Python

Simplemente podemos encurtir los objetos anteriores ejecutando un serie de tugurio funciones, de la siguiente manera:

import pickle name = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dictionary tup = ( 31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') pickle.dump (name, pickled_file) pickle.dump (website, pickled_file) pickle.dump (english_french, pickled_file) pickle. volcado (tup, pickled_file)

Esto decapará los cuatro objetos en el archivo de salmuera. pickled_file.pickle.

Hay otra manera maravillosa de escribir el script anterior usando el Pickler clase en el conservar en vinagre módulo, como sigue:

from pickle import Nombre de Pickler = 'Abder' sitio web = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dictionary tup = (31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') p = Pickler (pickled_file) p.dump (nombre); p.dump (sitio web); p.dump (english_french); p.dump (tup)

Para restaurar (cargar) los datos originales, simplemente podemos usar más de uno carga función, de la siguiente manera:

import pickle pickle_file = open ('pickled_file.pickle') name = pickle.load (pickled_file) website = pickle.load (pickled_file) english_french = pickle.load (pickled_file) tup = pickle.load (pickled_file) print ('Name:' ) print (nombre) print ('Sitio web:') print (sitio web) print ('Inglés al francés:') print (english_french) print ('Tuple data:') print (tup)

La salida del script anterior es:

Nombre: Abder Sitio web: http://abder.io Inglés al francés: 'car': 'voiture', 'pen': 'stylo', 'paper': 'papier' Datos de la tupla: (31, 'abder' , 4.0)

Como con el Pickler clase, podemos reescribir el script anterior usando el Unpickler clase en el conservar en vinagre módulo, como sigue:

desde pickle importar Unpickler pickled_file = open ('pickled_file.pickle') u = Unpickler (pickled_file) name = u.load (); sitio web = u.load (); english_french = u.load (); tup = u.load () print ('Name:') print (name) print ('Website:') print (website) print ('English to French:') print (english_french) print ('Tuple data:') imprimir (tup)

Tenga en cuenta que las variables deben escribirse y leerse en el mismo orden para obtener el resultado deseado. Para evitar cualquier problema aquí, podemos usar un diccionario para administrar los datos, de la siguiente manera:

import pickle name = 'Abder' website = 'http://abder.io' english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture' # dictionary tup = ( 31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') data = 'name': name, 'website': sitio web, 'english_french_dictionary': english_french, 'tuple': tup  pickle.dump (data, pickled_file)

Para restaurar (cargar) los datos decapados en el script anterior, podemos hacer lo siguiente:

import pickle pickled_file = open ('pickled_file.pickle') data = pickle.load (pickled_file) name = data ['name'] website = data ['website'] english_french = data ['english_french_dictionary'] tup = data ['tupla '] print (' Name: ') print (name) print (' Website: ') print (website) print (' English to French: ') print (english_french) print (' Tuple data: ') print (tup)

Encurtidos y Pandas

Bueno, esta parece una combinación interesante. Si se está preguntando qué son las Pandas, puede aprender más sobre ellas en el tutorial de Introducción a Pandas. La estructura básica de datos de pandas se llama Marco de datos, Una estructura de datos tabular compuesta de columnas y filas ordenadas..

Tomemos un ejemplo de Marco de datos del tutorial de Pandas:

importar pandas como pd name_age = 'Name': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] data_frame = pd.DataFrame (name_age)

Para encurtir nuestros Marco de datos, podemos usar el to_pickle () función, de la siguiente manera:

data_frame.to_pickle ('my_panda.pickle')

Para restaurar (cargar) el encurtido. Marco de datos, podemos usar el read_pickle () función, de la siguiente manera:

restore_data_frame = pd.read_pickle ('my_panda.pickle')

Al juntar todo lo que hemos mencionado en esta sección, así es como se ve la secuencia de comandos que escurre y carga un objeto de pandas:

importar pandas como pd name_age = 'Name': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] data_frame = pd.DataFrame (name_age) data_frame.to_pickle ('my_panda.pickle') restore_data_frame = pd.read_pickle ('my_panda.pickle') imprimir (restore_data_frame)

Conclusión

En este tutorial, he cubierto un módulo interesante llamado conservar en vinagre. Hemos visto con qué facilidad este módulo nos permite almacenar objetos de Python para diferentes propósitos, como usar el objeto con otro programa de Python, transferir el objeto a través de una red, guardar el objeto para su uso posterior, etc. Simplemente podemos declinar el objeto de Python , y descomprimir (cargar) cuando queremos restaurar el objeto original.

No dude en ver lo que tenemos disponible para la venta y para estudiar en el mercado, y no dude en hacer cualquier pregunta y proporcionar sus valiosos comentarios utilizando el siguiente feed..