Сохранение данных 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 |