M
Mario Ceresa
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)
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)