# The shelve module is used to store objects in a file. # You use the file like a glorified dict with key, value # pairs. import shelve # shelve python doc objList = [] filename = 'shelveFile.shelve' # open and or create the file file = shelve.open(filename) # Here is an example class we'll create # instances of and then store in the file class ExampleClass(object): def __init__(self): self.a = 0 self.b = 1 self.c = 2 self.k = 0 def getTotal(self): return self.a + self.b + self.c # create several instances for i in xrange(3): obj = ExampleClass() obj.k = i obj.a = i+1 obj.b = i+2 obj.c = i+3 objList.append(obj) # now add the objects to file object for i in objList: # keys are strings file[str(i.k)] = i # The sync command will explicitly # write changes to file file.sync() # Closing the object will also execute # the sync command file.close() # The file (and the 3 objects in it # are now saved. # Now we'll reopen and verify the data is there file2 = shelve.open(filename) # Iterate through and print out # the object attributes (to verify # they are the values we assigned previously) for i in file2.keys(): j = file2[str(i)] print "a,b,c,k = ", j.a, j.b, j.c, j.k #output: #a,b,c,k = 1 2 3 0 #a,b,c,k = 3 4 5 2 #a,b,c,k = 2 3 4 1 # You can edit these values. # Here will change all 'a' attributes to 7 for i in file2.keys(): # Take note of how these changes were made. # You cannot merely alter an attribute # like file2[str(i)].a = 7 (this will # not work). j = file2[str(i)] j.a = 7 file2[str(j.k)] = j # And verify that changes are made: for i in file2.keys(): j = file2[str(i)] print "a,b,c,k = ", j.a, j.b, j.c, j.k #output: #a,b,c,k = 7 2 3 0 #a,b,c,k = 7 4 5 2 #a,b,c,k = 7 3 4 1 # now close the shelve file so you can # use the data objects another day. file2.close()
A python example based blog that shows how to accomplish python goals and how to correct python errors.
Showing posts with label shelve. Show all posts
Showing posts with label shelve. Show all posts
Saturday, October 3, 2009
Python - storing persistance objects in file with shelve
Subscribe to:
Posts (Atom)