Welcome, guest | Sign In | My Account | Store | Cart
from __future__ import with_statement
from contextlib import contextmanager

@contextmanager
def pickled(filename):
    if os.path.isfile(filename):
        data = pickle.load(open(filename))
    else:
        data = {}

    def getter(item, type):
        if item in data:
            return data[item]
        else:
            data[item] = type()
            return data[item]

    yield getter

    pickle.dump(data, open(filename, "w"))

# Here is an example usage:
with pickled("foo.db") as p:
    p("users", list).append(["srid", "passwd", 23])

History