Модуль marshal
в языке Python предоставляет функциональность для сериализации (преобразования объектов в байтовую последовательность) и десериализации (восстановления объектов из байтовой последовательности).
marshal.dump()
: сериализация (запись) объекта в файл или байтовый объект.marshal.load()
: десериализация (чтение) объекта из файла или байтового объекта.Метод marshal.dump()
используется для сериализации объекта и сохранения его в файл или байтовый объект.
Синтаксис метода marshal.dump()
:
import marshal
data = {'name': 'John', 'age': 30}
with open('data.marshal', 'wb') as file:
marshal.dump(data, file)
print("Dump ok")
В этом примере мы импортируем модуль marshal
и создаем словарь data
. Затем мы открываем файл data.marshal
в режиме записи бинарных данных ("wb") и вызываем метод marshal.dump()
с аргументами data
и file
, чтобы сохранить данные словаря в файл. Наконец, мы закрываем файл.
Метод marshal.load()
используется для десериализации объекта из файла или байтового объекта и восстановления его в памяти.
Синтаксис метода marshal.load()
:
import marshal
with open('data.marshal', 'rb') as file:
data = marshal.load(file)
print(data) # Вывод: {'name': 'John', 'age': 30}
В этом примере мы открываем файл data.marshal
в режиме чтения бинарных данных ("rb") и вызываем метод marshal.load()
с аргументом file
, чтобы загрузить данные из файла в переменную data
. Затем мы закрываем файл и выводим данные на экран. Результатом будет словарь {"name": "John", "age": 30}
.
dumps()
Метод dumps()
принимает один аргумент - объект, который требуется сериализовать. Он возвращает строку байтов, представляющую сериализованный объект. Пример использования метода dumps()
:
import marshal
data = {1: 'apple', 2: 'banana', 3: 'orange'}
serialized_data = marshal.dumps(data)
print(serialized_data)
loads()
Метод loads()
принимает один аргумент - сериализованные данные в виде строки байтов. Он возвращает восстановленный объект из этих данных. Пример использования метода loads()
:
import marshal
serialized_data = b'ûé Úappleé Úbananaé Úorange0'
data = marshal.loads(serialized_data)
print(data)
# Вывод: {1: 'apple', 2: 'banana', 3: 'orange'}
version
Свойство version
возвращает текущую версию формата сериализации и десериализации данных, используемого модулем marshal
. Пример использования свойства version
:
import marshal
version = marshal.version
print(version)
# Вывод: 4
Модуль marshal
позволяет сохранять сложные объекты, включая контейнеры, функции и классы. Однако, важно отметить, что формат сериализации, используемый этим модулем, зависит от конкретной версии Python и может изменяться между различными версиями.
Использование модуля marshal
может быть полезным при сохранении объектов на диск или при передаче данных по сети в бинарном формате. Однако, из-за зависимости от конкретной версии Python, использование модуля json
или pickle
может быть предпочтительнее для большинства случаев.
Примечание: модуль marshal
в настоящее время не поддерживает сериализацию пользовательских классов напрямую. Если вам необходимо сериализовать объекты пользовательских классов, вам следует рассмотреть использование модуля pickle
.
Более подробную информацию о модуле marshal
вы можете найти в [официальной документации](https://docs.python.org/3/library/marshal.html).