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 |