Python Data Persistence - Object Serialization

O objeto de arquivo embutido do Python retornado pela função open () embutida do Python tem uma deficiência importante. Quando aberto com o modo 'w', o método write () aceita apenas o objeto string.

Isso significa que, se você tiver dados representados em qualquer forma diferente de string, o objeto de classes internas (números, dicionário, listas ou tuplas) ou outras classes definidas pelo usuário, eles não podem ser gravados diretamente no arquivo. Antes de escrever, você precisa convertê-lo em sua representação de string.

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

Para um arquivo binário, argumento para write()método deve ser um objeto byte. Por exemplo, a lista de inteiros é convertida em bytes porbytearray() função e, em seguida, gravados no arquivo.

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

Para ler os dados do arquivo no respectivo tipo de dados, é necessário fazer a conversão reversa.

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

Este tipo de conversão manual de um objeto em formato de string ou byte (e vice-versa) é muito complicado e tedioso. É possível armazenar o estado de um objeto Python na forma de fluxo de bytes diretamente em um arquivo ou fluxo de memória e recuperar ao seu estado original. Esse processo é chamado de serialização e desserialização.

A biblioteca integrada do Python contém vários módulos para o processo de serialização e desserialização.

Sr. Não. Nome e Descrição
1

pickle

Biblioteca de serialização específica do Python

2

marshal

Biblioteca usada internamente para serialização

3

shelve

Persistência de objeto pitônico

4

dbm

biblioteca que oferece interface para banco de dados Unix

5

csv

biblioteca para armazenamento e recuperação de dados Python para o formato CSV

6

json

Biblioteca para serialização para o formato JSON universal