- Python objects can be serialized into binary form and deserialized back to Python objects using the methods and classes available from the Python module pickle.
- The process of converting a Python object into binary form is called Pickling.
- The process of converting the binary stream back to a Python object is called Unpickling.
- Pickled objects can be stored in a disk file and unpickled back as objects.
- The Python module pickle provides the methods, classes, constants and exceptions to be used during the pickling process.
- While the dump() variants pickle the Python object hierarchies the load() variants unpickle the bytes back into Python object hierarchies.
In the Python example code below, the method pickle.dump() is used to convert a Python object type Part into a byte stream. The pickle.load() is used to convert the byte stream back to a Python object.
# Class definition of a part
number = 0
name = ""
def __init__(self, number, name):
self.number = number
self.name = name
print("Part Number: %d"%(self.number))
print("Part Name: %s"%(self.name))
# Instantiate a part
# Create a file to store the pickled object
objectRepository = open("ObjectFile.picl", "wb");
# Pickle/serialize the python object and store the bytes into a binary file
pickle.dump(part1, objectRepository, protocol=pickle.HIGHEST_PROTOCOL)
# Unpickle/de-serialize the python object and print the attributes of the object
objectRepository = open("ObjectFile.picl", "rb",);
reconstructedObject = pickle.load(objectRepository)
# Print object attributes
Part Number: 111
Part Name: Spindle