Python Pickle Tutorial - Serialize and De-serialize Objects


Python Pickle

Python Pickle module is used to serialize and de-serialize Python Objects. Serialization is used to convert Python Object to a single stream of characters and write the stream to a file storage. De-serialization is used to construct a Python Object from the data read from file storage(which is serialized previously).

Among the Python community, Pickle is referred in terms of verb, adjective, noun, etc., like Pickling, Picklable, Pickled, Unpickle, etc. In a day or two, you will get used to this terminology, if you are working with Python Pickle and referring multiple online resources.

Which Datatypes can be Pickled?

Following Python Datatypes can be pickled.

  • Booleans - True, False
  • Integers - 25, 6, 896
  • Floats - 2.56, 8.124, 2.14
  • Complex Numbers - 3+4j, 9-j, 7j
  • Strings - (Normal, Unicode)
  • Tuples
  • Lists
  • Sets
  • Dictionaries
  • Top level Functions and Class Objects of a Module

Which datatypes cannot be Pickled?

Though most of the datatypes and objects can be Pickled, some cannot be. Those are:

  • Generators
  • Inner classes
  • Lambda Functions
  • Defaultdicts

Import Pickle Module

To import Pickle module into your program, use the following code.

import pickle

Examples

1. Pickle a dictionary and write to a file

In the following example, we will take a dictionary and pickle it. After pickling, the serialized data is written to a file. We just need to specify the file name. There will be no extension to the pickle file.

Python Program

import pickle

# Take a dictionary
marks = { 'Alex': 87, 'Lini': 92, 'Kiku': 90 }
# Create a pickle file
picklefile = open('marks', 'wb')
# Pickle the dictionary and write it to file
pickle.dump(marks, picklefile)
# Close the file
picklefile.close()

You would see that a file named marks is created at the current working directory.

2. Un-pickle or deserialise data

In the following example, we will unpickle the file generated in the above example.

Python Program

import pickle

# Create a pickle file
picklefile = open('marks', 'rb')
# Pickle the dictionary and write it to file
marks = pickle.load(picklefile)
# Close the file
picklefile.close()
# Print the dictionary
print(marks)
print(type(marks))

Output

{'Alex': 87, 'Lini': 92, 'Kiku': 90}
<class 'dict'>

Additional Reading

Like what you are reading! Check out our other tutorials covering pickle.

Summary

In this tutorial of Python Examples, we learned how to use Pickle library to serialize or de-serialize Python objects, with the help of example programs.