Сохранение данных Python - сериализация объектов

Встроенный файловый объект Python, возвращаемый встроенной функцией Python open (), имеет один важный недостаток. При открытии в режиме 'w' метод write () принимает только строковый объект.

Это означает, что если у вас есть данные, представленные в какой-либо нестроковой форме, объектах встроенных классов (числа, словарь, списки или кортежи) или других определяемых пользователем классов, они не могут быть записаны в файл напрямую. Перед написанием вам необходимо преобразовать его в строковое представление.

numbers=[10,20,30,40]
   file=open('numbers.txt','w')
   file.write(str(numbers))
   file.close()

Для двоичного файла аргумент write()Метод должен быть байтовым объектом. Например, список целых чисел преобразуется в байты с помощьюbytearray() функция, а затем записывается в файл.

numbers=[10,20,30,40]
   data=bytearray(numbers)
   file.write(data)
   file.close()

Чтобы прочитать данные из файла соответствующего типа, необходимо выполнить обратное преобразование.

file=open('numbers.txt','rb')
   data=file.read()
   print (list(data))

Этот тип ручного преобразования объекта в строковый или байтовый формат (и наоборот) очень громоздкий и утомительный. Можно сохранить состояние объекта Python в виде потока байтов непосредственно в файл или поток памяти и восстановить его исходное состояние. Этот процесс называется сериализацией и десериализацией.

Встроенная библиотека Python содержит различные модули для процесса сериализации и десериализации.

Sr.No. Имя и описание
1

pickle

Библиотека сериализации для Python

2

marshal

Библиотека, используемая внутри для сериализации

3

shelve

Сохранение питонического объекта

4

dbm

библиотека, предлагающая интерфейс к базе данных Unix

5

csv

библиотека для хранения и извлечения данных Python в формат CSV

6

json

Библиотека для сериализации в универсальный формат JSON