Per ricapitolare l'interfaccia (key è una stringa, data è
un oggetto arbritrario):
import shelve
d = shelve.open(filename) # open -- file che può prendere un suffisso
# aggiunto da una libreria di basso-livello
d[key] = data # immagazzina i dati della chiave (sovrascrive i
# vecchi dati se sta usando una chiave esistente)
data = d[key] # recupera una COPIA dei dati dalla chiave
# (solleva KeyError se la chiave non corrisponde)
del d[key] # cancella i dati immagazzinati nella chiave
# (solleva KeyError se la chiave non corrisponde)
flag = d.has_key(key) # vero se la chiave esiste
list = d.keys() # una lista di tutte le chiavi esistenti (lento!)
# visto che d è stata aperta SENZA writeback=True, si faccia attenzione che:
d['xx'] = range(4) # questa lavora come sperato, ma ...
d['xx'].append(5) # *questa no!* -- d['xx'] è ANCORA range(4)!!!
# avendo aperto d senza writeback=True, avete bisogno di scrivere accuratamente:
temp = d['xx'] # estrae la copia
temp.append(5) # modifica la copia
d['xx'] = temp # memorizza la copia, per renderla persistente
# oppure, d=shelve.open(nomefile,writeback=True) potrebbe lasciarvi
# scrivere d['xx'].append(5) e farla funzionare come deisderato, MA
# potrebbe anche consumare una maggiore quantità di memoria, e rendere
# l'operazione d.close() più lenta.
d.close() # chiude d
Vedete anche:
dbm.
db.
dbm.
dbm.