Python 3.0: Gravando dicionários em arquivos

Publicado por Evaldo Avelar Marques em 25/01/2011

[ Hits: 16.690 ]

Blog: http://evaldoavelar.blogspot.com/

 


Python 3.0: Gravando dicionários em arquivos



Dicionário é um recurso interessante do Python que nos permite representar uma coleção de elementos, como a strut do C ou o record do Pascal. Também permite utilizar um índice de qualquer tipo imutável, ao contrário da lista, onde índices são sempre inteiros sequencialmente atribuídos.

Para gravar o dicionário em um arquivo vamos precisar das funções dump e load, disponíveis no modulo pickle. O pickle implementa um algoritmo fundamental, mas que é poderoso para serializar e deserializar uma estrutura de objetos Python (python.org).

O processo é feito convertendo o objeto em uma stream (fluxo de bytes) e gravando o no arquivo (com a função dump). A operação inversa (com a função load) converte o stream gravado no arquivo em um objeto.

Exemplo gravação:

import pickle #modulo pickle

dic={ 'Nome':'Evaldo','Idade':25} #dicionário
arq = open('teste.txt','wb') #abrir o arquivo para gravação - o "b" significa que o arquivo é binário
pickle.dump(dic,arq) #Grava uma stream do objeto "dic" para o arquivo.
arq.close() #fechar o arquivo

Exemplo leitura:

import pickle #modulo pickle

arq = open('teste.txt','rb') #abrir o arquivo para leitura - o "b" significa que o arquivo é binário
dic = pickle.load(arq)#Ler a stream a partir do arquivo e reconstroi o objeto original.
arq.close() #fechar o arquivo
print (dic) #imprime o conteúdo do dicionário

Saída:

>>> { 'Nome':'Evaldo','Idade':25}

Mais informações:
Outras dicas deste autor

Dropbox com dual boot

HD USB externo com filesystem JFS

O poder do root, esse mega super usuário

Firebird - Recuperando o tipo, nome, tamanho e descrição dos campos de uma tabela

Adicionando diretórios ao Elisa (Media Center para Linux)

Leitura recomendada

Python - UnicodeDecodeError: 'utf-8' codec can't decode byte [Resolvido]

Python: Descompilando bytecode

Remover diretórios recursivamente em Python

Usando o Yowsup para enviar comandos ao Shell

Liberando acesso a SICOV e Conectividade Social

  

Comentários
[1] Comentário enviado por removido em 29/07/2017 - 19:10h

Perdão por estar ressuscitando um post de 2011, mas usando esse método, quando eu escrevo algo no arquivo ele está apagando o que havia antes. Eu tentei usar o "ab" em vez do "wb", mas não está funcionando, tem alguma idéia do que pode ser feito?

[2] Comentário enviado por demopython em 14/10/2017 - 03:17h


[1] Comentário enviado por taynancesar em 29/07/2017 - 19:10h

Perdão por estar ressuscitando um post de 2011, mas usando esse método, quando eu escrevo algo no arquivo ele está apagando o que havia antes. Eu tentei usar o "ab" em vez do "wb", mas não está funcionando, tem alguma idéia do que pode ser feito?


Estou tendo o mesmo problema. Se vc conseguiu resolver, por favor, me avise.
Valeuu



Contribuir com comentário