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