Python Language
Sérialisation des données
Recherche…
Syntaxe
- unpickled_string = pickle.loads (chaîne)
- unpickled_string = pickle.load (objet_fichier)
- pickled_string = pickle.dumps ([('', 'cmplx'), {('objet',): Aucun}], pickle.HIGHEST_PROTOCOL)
- pickle.dump (('', 'cmplx'), {('objet',): aucun}], objet_fichier, pickle.HIGHEST_PROTOCOL)
- unjsoned_string = json.loads (chaîne)
- unjsoned_string = json.load (objet_fichier)
- jsoned_string = json.dumps (('a', 'b', 'c', [1, 2, 3]))
- json.dump (('a', 'b', 'c', [1, 2, 3]), objet_fichier)
Paramètres
Paramètre | Détails |
---|---|
protocol | En utilisant pickle ou cPickle , c'est la méthode utilisée pour sérialiser / désérialiser les objets. Vous voulez probablement utiliser pickle.HIGHEST_PROTOCOL ici, ce qui signifie la méthode la plus récente. |
Remarques
Pourquoi utiliser JSON?
- Prise en charge multilingue
- Lisible par l'homme
- Contrairement au cornichon, il ne risque pas d'exécuter du code arbitraire
Pourquoi ne pas utiliser JSON?
- Ne prend pas en charge les types de données Pythonic
- Les clés dans les dictionnaires ne doivent pas être autres que les types de données de chaîne.
Pourquoi Pickle?
- Un excellent moyen de sérialiser Pythonic (tuples, fonctions, classes)
- Les clés dans les dictionnaires peuvent être de tout type de données.
Pourquoi pas Pickle?
- La prise en charge de plusieurs langues est manquante
- Il n'est pas sûr de charger des données arbitraires
Sérialisation en utilisant JSON
JSON est une méthode multilingue, largement utilisée pour sérialiser les données
Types de données pris en charge: int , float , boolean , string , list et dict . Voir -> Wiki JSON pour plus
Voici un exemple démontrant l'utilisation de base 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)
Voir le module JSON pour des informations détaillées sur JSON.
Sérialisation à l'aide de Pickle
Voici un exemple démontrant l'utilisation de base 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)
Voir Pickle pour des informations détaillées sur Pickle.
AVERTISSEMENT : La documentation officielle de pickle indique clairement qu'il n'y a aucune garantie de sécurité. Ne chargez aucune donnée dont vous ne connaissez pas l'origine.
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow