Ryan Krauss wrote: > Is there an easy way to convert a shelved object back to a dictionary? > When I save a dictionary using shelve and then load it in a later > session, I have an object whose property names are the keys of the > dictionary used as an input to shelve. For example, instead of > user['name'] I have user.name. I would prefer to have the scripts I > write to analyze the saved data have a similar syntax to the ones I > used to create it, so I would rather deal with a dictionary after I > load the shelved data.
session 1: >>> import shelve >>> db = shelve.open("foo") >>> d = {"a": 1, "b": 2} >>> db["key"] = d >>> print d {'a': 1, 'b': 2} >>> print db["key"] {'a': 1, 'b': 2} >>> db.close() session 2: >>> import shelve >>> db = shelve.open("foo") >>> db["key"] {'a': 1, 'b': 2} >>> type(db["key"]) <type 'dict'> >>> db["key"].key Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: 'dict' object has no attribute 'key' >>> are you sure you're saving dictionaries? what does "print type(obj)" print for objects from your shelve? what does the following print for your data- base ? >>> import anydbm >>> db = anydbm.open("<insert shelve name here>") >>> db[db.keys()[0]] </F> -- http://mail.python.org/mailman/listinfo/python-list