Módulo Shelve do Python

Da documentação do Python 3

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']]