Le Thursday 04 September 2008 13:08:59 Gerhard Häring, vous avez écrit : > gopal mishra wrote: > > I have 3 objects and want to save in one pickle file. > > > > I used cPickle to dump 3 objects in a pkl file > > > > i.e cPickle.dump(object1, fileobject, -1) > > > > cPickle.dump(object2, fileobject, -1) > > > > cPickle.dump(object3, fileobject, -1) > > > > > > > > I have changed the 3^rd object and want to save the updated 3^rd object > > in the pickle file. > > > > I have to dump all the 3 objects again. > > > > Is there any way to dump only the 3^rd object in to the pkl file. > > No, there isn't. You could, of course, save each object in its own > pickle file. Or use an object database like ZODB instead. >
Shelve is another alternative, shipped with python and rather straightforward. Shelve as ZODB use pickles of objects but, unlike ZODB, won't need you change anything to your actual classes. >>>[8]: import shelve >>>[9]: s = shelve.open('db') >>>[10]: a, b, c = 5, 4., ("foo", "bar") >>>[11]: s['a'], s['b'], s['c'] = a, b, c >>>[12]: s.close() >>>[13]: [EMAIL PROTECTED] 13:46:42:~$ file db db: Berkeley DB (Hash, version 8, native byte-order) [EMAIL PROTECTED] 13:46:44:~$ ipython >>>[1]: import shelve >>>[2]: s = shelve.open('db') >>>[3]: for name, value in s.items() : print name, value ...: b 4.0 a 5 c ('foo', 'bar') >>>[5]: del s['b'] >>>[6]: s['c'] += ('baz',) >>>[7]: s.sync() >>>[8]: [EMAIL PROTECTED] 13:48:12:~$ ipython >>>[1]: import shelve >>>[2]: s = shelve.open('db') >>>[3]: for name, value in s.items() : print name, value ...: a 5 c ('foo', 'bar', 'baz') The sync method may not work on all platform, maybe you'll have to close and re-open the db file to write to disk. -- _____________ Maric Michaud -- http://mail.python.org/mailman/listinfo/python-list