Szukaj…


Składnia

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

Parametry

Parametr Detale
protocol Używając pickle lub cPickle , jest to metoda, że obiekty są szeregowane / nieserializowane. Prawdopodobnie chcesz tutaj użyć pickle.HIGHEST_PROTOCOL , co oznacza najnowszą metodę.

Uwagi

Dlaczego warto korzystać z JSON?

  • Obsługa wielu języków
  • Czytelny dla człowieka
  • W przeciwieństwie do marynaty, nie ma niebezpieczeństwa uruchomienia dowolnego kodu

Dlaczego nie używać JSON?

  • Nie obsługuje typów danych w języku Python
  • Klucze w słownikach nie mogą być inne niż łańcuchowe typy danych.

Dlaczego Pickle?

  • Świetny sposób na serializację Pythonic (krotki, funkcje, klasy)
  • Klucze w słownikach mogą być dowolnego typu danych.

Dlaczego nie Pickle?

  • Brakuje obsługi wielu języków
  • Ładowanie danych arbitralnych nie jest bezpieczne

Serializacja przy użyciu JSON

JSON to wielojęzyczna, szeroko stosowana metoda serializacji danych

Obsługiwane typy danych: int , float , boolean , string , list i dict . Zobacz -> JSON Wiki po więcej

Oto przykład demonstrujący podstawowe użycie 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)

Zobacz moduł JSON, aby uzyskać szczegółowe informacje o JSON.

Serializacja za pomocą Pickle

Oto przykład demonstrujący podstawowe użycie marynaty : -

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

Zobacz Pickle, aby uzyskać szczegółowe informacje na temat Pickle.

OSTRZEŻENIE : Oficjalna dokumentacja marynaty wyjaśnia, że nie ma gwarancji bezpieczeństwa. Nie ładuj żadnych danych, którym nie ufasz.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow