Python 3.0: Gravando dicionários em arquivos

Publicado por Evaldo Avelar Marques em 25/01/2011

[ Hits: 15.768 ]

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

Como medir a informação?

O poder do root, esse mega super usuário

Dropbox com dual boot

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

HD USB externo com filesystem JFS

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

Problema na página do Banco do Brasil - Solução: Downgrade do kernel no Debian

  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts