cpython/Lib/shelve.py

44 lines
775 B
Python

"""Manage shelves of pickled objects."""
import pickle
import StringIO
class Shelf:
def __init__(self, dict):
self.dict = dict
def keys(self):
return self.dict.keys()
def __len__(self):
return self.dict.len()
def has_key(self, key):
return self.dict.has_key(key)
def __getitem__(self, key):
return pickle.Unpickler(StringIO.StringIO(self.dict[key])).load()
def __setitem__(self, key, value):
f = StringIO.StringIO()
p = pickle.Pickler(f)
p.dump(value)
self.dict[key] = f.getvalue()
def __delitem__(self, key):
del self.dict[key]
def close(self):
self.db.close()
self.db = None
class DbShelf(Shelf):
def __init__(self, file):
import anydbm
Shelf.__init__(self, anydbm.open(file))
def open(file):
return DbShelf(file)