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
[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