Módulo shelve - Python
O módulo shelve
Abrindo um Arquivo
Para abrir um arquivo, o shelve utiliza a função open()
shelve.open(caminho_do_arquivo[, flag="c"[, protocol=None[, writeback=False]]])
O parâmetro flag
: o arquivo é aberto para leitura e escrita (padrão). Se o arquivo não existir, ele será criado.c
: o arquivo é aberto apenas para leitura.r
: o arquivo é aberto apenas para escrita.w
: o arquivo é aberto para escrita. Se o arquivo não existir, ele será criado. Se existir, será sobrescrito.n
Para fechar a conexão com o arquivo, utiliza-se o método close()
import shelve
d = shelve.open(filename)
d.close()
Uma alternativa mais segura é utilizar o operador with
import shelve
FILENAME = "states"
with shelve.open(FILENAME) as states:
states["Brasília"] = "Brazil"
states["Paris"] = "France"
states["Berlin"] = "Germany"
states["Madrid"] = "Spain"
with shelve.open(FILENAME) as states:
print(states["London"])
print(states["Madrid"])
Salvando Dados
Para salvar dados, basta atribuir um valor a uma chave específica:
states["Brasília"] = "Brazil"
Lendo Dados
A leitura dos dados é feita acessando o valor pela chave:
print(states["Brasília"])
Se a chave não existir, ocorre uma exceção. Para evitar isso, verifique a existência da chave usando o operador in
with shelve.open(FILENAME) as states:
key = "Brussels"
if key in states:
print(states[key])
Outra alternativa é o método get()
with shelve.open(FILENAME) as states:
state = states.get("Brussels", "Undefined")
print(state)
Iterando sobre os Dados
Para percorrer todos os itens no arquivo, pode-se usar um laço for
with shelve.open(FILENAME) as states:
for key in states:
print(key, " - ", states[key])
Os métodos keys()
values()
with shelve.open(FILENAME) as states:
for city in states.keys():
print(city, end=" ") # Brasília Paris Berlin Madrid
print()
for country in states.values():
print(country, end=" ") # Brazil France Germany Spain
O método items()
with shelve.open(FILENAME) as states:
for state in states.items():
print(state) # ('Brasília', 'Brazil') ('Paris', 'France') ('Berlin', 'Germany') ('Madrid', 'Spain')
Atualização de Dados
Para atualizar um valor, basta redefinir a chave. Para adicionar novos dados, crie uma nova chave:
import shelve
FILENAME = "states"
with shelve.open(FILENAME) as states:
states["London"] = "Great Britain"
with shelve.open(FILENAME) as states:
states["London"] = "United Kingdom"
states["Brussels"] = "Belgium"
states["Kiev"] = "Ukraine"
for key in states:
print(key, " - ", states[key])
Remoção de Dados
Para remover um item e retornar seu valor simultaneamente, utilize pop()
with shelve.open(FILENAME) as states:
state = states.pop("London", "Not Found")
print(state)
Outra opção para remover um item é o operador del
with shelve.open(FILENAME) as states:
del states["Madrid"]
Para remover todos os elementos de uma só vez, utilize o método clear()
with shelve.open(FILENAME) as states:
states.clear()
Essas são as operações básicas do módulo shelve para manipulação de dados em arquivos binários no Python, oferecendo métodos de leitura, escrita, atualização e remoção, de forma semelhante ao trabalho com dicionários.