Поиск…


Синтаксис

  • unpickled_string = pickle.loads (строка)
  • unpickled_string = pickle.load (file_object)
  • pickled_string = pickle.dumps ([('', 'cmplx'), {('object',): None}], pickle.HIGHEST_PROTOCOL)
  • pickle.dump (('', 'cmplx'), {('object',): None}], file_object, pickle.HIGHEST_PROTOCOL)
  • unjsoned_string = json.loads (строка)
  • 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)

параметры

параметр подробности
protocol Используя pickle или cPickle , это метод, который объекты сериализуются / несериализуются. Вероятно, вы захотите использовать pickle.HIGHEST_PROTOCOL здесь, что означает новейший метод.

замечания

Зачем использовать JSON?

  • Поддержка перекрестных языков
  • Человек читаемый
  • В отличие от рассола, у него нет опасности запуска произвольного кода

Почему бы не использовать JSON?

  • Не поддерживает типы данных Pythonic
  • Ключи в словарях не должны быть отличными от строковых типов данных.

Почему рассол?

  • Отличный способ для сериализации Pythonic (кортежи, функции, классы)
  • Ключи в словарях могут быть любого типа данных.

Почему не рассол?

  • Отсутствует поддержка перекрестного языка
  • Это не безопасно для загрузки произвольных данных

Сериализация с использованием JSON

JSON - это кросс-язык, широко используемый метод сериализации данных

Поддерживаемые типы данных: int , float , boolean , string , list и dict . Смотрите -> JSON Wiki для получения дополнительной информации

Вот пример, демонстрирующий основное использование 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)

Дополнительную информацию о JSON см. В JSON-модуле .

Сериализация с использованием 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)

См. Pickle для получения более подробной информации о Pickle.

ПРЕДУПРЕЖДЕНИЕ . Официальная документация на рассол дает четкое представление о том, что гарантий безопасности нет. Не загружайте данные, которым вы не доверяете.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow