Ricerca…


Sintassi

  • unpickled_string = pickle.loads (stringa)
  • unpickled_string = pickle.load (file_object)
  • pickled_string = pickle.dumps ([('', 'cmplx'), {('oggetto',): Nessuno}], pickle.HIGHEST_PROTOCOL)
  • pickle.dump (('', 'cmplx'), {('oggetto',): Nessuno}], file_oggetto, pickle.HIGHEST_PROTOCOL)
  • unjsoned_string = json.loads (stringa)
  • 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)

Parametri

Parametro Dettagli
protocol Usando pickle o cPickle , è il metodo con cui gli oggetti vengono serializzati / non serializzati. Probabilmente vorrai utilizzare pickle.HIGHEST_PROTOCOL qui, il che significa che il metodo più recente.

Osservazioni

Perché usare JSON?

  • Supporto per le lingue incrociate
  • Leggibile dagli umani
  • A differenza di pickle, non ha il rischio di eseguire codice arbitrario

Perché non usare JSON?

  • Non supporta i tipi di dati Pythonic
  • Le chiavi nei dizionari non devono essere diversi dai tipi di dati stringa.

Perché Pickle?

  • Ottimo modo per serializzare Pythonic (tuple, funzioni, classi)
  • Le chiavi nei dizionari possono essere di qualsiasi tipo di dati.

Perché non sottaceto?

  • Manca il supporto per le lingue incrociate
  • Non è sicuro per il caricamento di dati arbitrari

Serializzazione tramite JSON

JSON è un metodo cross-language, ampiamente utilizzato per serializzare i dati

Tipi di dati supportati: int , float , boolean , string , list e dict . Vedi -> JSON Wiki per ulteriori informazioni

Ecco un esempio che dimostra l'utilizzo di base di 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)

Vedi Modulo JSON per informazioni dettagliate su JSON.

Serializzazione tramite Pickle

Ecco un esempio che dimostra l'utilizzo di base del sottaceto : -

# 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)

Vedi Pickle per informazioni dettagliate su Pickle.

ATTENZIONE : la documentazione ufficiale per il sottaceto chiarisce che non ci sono garanzie di sicurezza. Non caricare dati di cui non ti fidi dell'origine.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow