Módulo Shelve do Python
Uma “prateleira” (shelf) é um objeto persistente, semelhante a um dicionário. A diferença em relação aos bancos de dados “dbm” é que os valores (não as chaves!) em uma prateleira podem ser essencialmente objetos Python arbitrários — qualquer coisa que o módulo pickle possa manipular. Isso inclui a maioria das instâncias de classe, tipos de dados recursivos e objetos que contêm muitos sub-objetos compartilhados. As chaves são strings comuns.
Salvar variáveis
import shelve
wife = ['Pretty', 'Lovely', 'Nice']
# Abrir arquivo de prateleira e salvar dados
with shelve.open('mydata') as shelf_file:
shelf_file['wife'] = wife
Abrir e ler variáveis
# Abrir arquivo de prateleira e ler dados
with shelve.open('mydata') as shelf_file:
print(type(shelf_file))
# Acessar valor armazenado pela chave
print(shelf_file['wife'])
<class 'shelve.DbfilenameShelf'>
['Pretty', 'Lovely', 'Nice']
Assim como os dicionários, os valores de shelf têm métodos keys() e values() que retornarão valores semelhantes a listas das chaves e valores na prateleira. Como esses métodos retornam valores semelhantes a listas em vez de listas verdadeiras, você deve passá-los para a função list() para obtê-los em formato de lista.
# Acessar todas as chaves e valores na prateleira
with shelve.open('mydata') as shelf_file:
print(list(shelf_file.keys()))
print(list(shelf_file.values()))
['wife']
[['Pretty', 'Lovely', 'Nice']]