Buscar..


Sintaxis

  • unpickled_string = pickle.loads (cadena)
  • unpickled_string = pickle.load (file_object)
  • pickled_string = pickle.dumps ([('', 'cmplx'), {('object',): None}], pickle.HIGHEST_PROTOCOL)
  • pickle.dump (('', 'cmplx'), {('object',): None}], file_object, pickle.HIGHEST_PROTOCOL)
  • unjsoned_string = json.loads (cadena)
  • unjsoned_string = json.load (file_object)
  • jsoned_string = json.dumps (('a', 'b', 'c', [1, 2, 3]))
  • json.dump (('' a ',' b ',' c ', [1, 2, 3]), file_object)

Parámetros

Parámetro Detalles
protocol Usando pickle o cPickle , es el método por el cual los objetos se serializan o no serializan. Probablemente quieras usar pickle.HIGHEST_PROTOCOL aquí, lo que significa el método más nuevo.

Observaciones

¿Por qué usar JSON?

  • Soporte de idiomas
  • Legible para humanos
  • A diferencia de Pickle, no tiene el peligro de ejecutar código arbitrario

¿Por qué no usar JSON?

  • No admite tipos de datos Pythonic
  • Las claves en los diccionarios no deben ser más que tipos de datos de cadena.

¿Por qué Pickle?

  • Gran manera de serializar Pythonic (tuplas, funciones, clases)
  • Las claves en los diccionarios pueden ser de cualquier tipo de datos.

¿Por qué no pickle?

  • Falta soporte de idiomas
  • No es seguro cargar datos arbitrarios.

Serialización utilizando JSON

JSON es un método de lenguaje cruzado, ampliamente utilizado para serializar datos.

Tipos de datos admitidos: int , float , booleano , cadena , lista y dict . Ver -> JSON Wiki para más

Aquí hay un ejemplo que demuestra el uso básico de JSON :

import json

families = (['John'], ['Mark', 'David', {'name': 'Avraham'}])

# Dumping it into string
json_families = json.dumps(families)
# [["John"], ["Mark", "David", {"name": "Avraham"}]]

# Dumping it to file
with open('families.json', 'w') as json_file:
    json.dump(families, json_file)

# Loading it from string
json_families = json.loads(json_families)

# Loading it from file
with open('families.json', 'r') as json_file:
    json_families = json.load(json_file)

Consulte el módulo JSON para obtener información detallada sobre JSON.

Serialización utilizando Pickle

Aquí hay un ejemplo que demuestra el uso básico de pickle :

# Importing pickle
try:
    import cPickle as pickle  # Python 2
except ImportError:
    import pickle  # Python 3

# Creating Pythonic object:
class Family(object):
    def __init__(self, names):
        self.sons = names

    def __str__(self):
        return ' '.join(self.sons)

my_family = Family(['John', 'David'])

# Dumping to string
pickle_data = pickle.dumps(my_family, pickle.HIGHEST_PROTOCOL)

# Dumping to file
with open('family.p', 'w') as pickle_file:
    pickle.dump(families, pickle_file, pickle.HIGHEST_PROTOCOL)

# Loading from string
my_family = pickle.loads(pickle_data)

# Loading from file
with open('family.p', 'r') as pickle_file:
    my_family = pickle.load(pickle_file)

Consulte Pickle para obtener información detallada acerca de Pickle.

ADVERTENCIA : La documentación oficial para pickle deja en claro que no hay garantías de seguridad. No cargues ningún dato en el que no confíes en su origen.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow