Python Language
Serializzazione dei dati
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