Python Language
Сериализация данных
Поиск…
Синтаксис
- 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