Pickle problem

Mario Ceresa ceres83 at gmail.com
Fri Apr 18 11:55:16 EDT 2008


Hello everybody:
I'd like to use the pickle module to save the state of an object so to
be able to restore it later. The problem is that it holds a list of
other objects, say numbers, and if I modify the list and restore the
object, the list itself is not reverted to the saved one, but stays
with one element deleted.
An example session is the following:

Data is  A [1, 2, 3, 4]
saving a with pickle
Deleting an object: del a[3]
Now data is A [1, 2, 3]
Oops! That was an error: can you please recover to the last saved data?
A [1, 2, 3]     #### I'd like to have here A[1,2,3,4]!!!!!!

Is it the intended behavior for pickle? if so, are there any way to
save the state of my object?

Code follows
-----------------------
class A(object):
	objects = []
-----------------------
then I run  the code:
---------------------------------------
import pickle
from core import A

a = A()

for i in [1,2,3,4]:
	a.objects.append(i)

savedData = pickle.dumps(a)
print "Saved data is ",a
print "Deleting an object"
del a.objects[3]
print a
print "Oops! This was an error: can you please recover the last saved data?"

print pickle.loads(savedData)
--------------------------------------------

Thank you for any help!

Mario



More information about the Python-list mailing list