7.2.2 The ‘pickle’ Module

Strings can easily be written to and read from a file. Numbers take a
bit more effort, since the read() method only returns
strings, which will have to be passed to a function like
int(), which takes a string like '123' and
returns its numeric value 123. However, when you want to save more
complex data types like lists, dictionaries, or class instances,
things get a lot more complicated.

Rather than have users be constantly writing and debugging code to
save complicated data types, Python provides a standard module called
‘pickle’. This is an
amazing module that can take almost
any Python object (even some forms of Python code!), and convert it to
a string representation; this process is called pickling.
Reconstructing the object from the string representation is called
unpickling. Between pickling and unpickling, the string
representing the object may have been stored in a file or data, or
sent over a network connection to some distant machine.

If you have an object x, and a file object f that's been
opened for writing, the simplest way to pickle the object takes only
one line of code:

pickle.dump(x, f)

To unpickle the object again, if f is a file object which has
been opened for reading:

x = pickle.load(f)

(There are other variants of this, used when pickling many objects or
when you don't want to write the pickled data to a file; consult the
complete documentation for
‘pickle’ in the
Python Library Reference Manual.)

‘pickle’ is the standard way
to make Python objects which can be stored and reused by other
programs or by a future invocation of the same program; the technical
term for this is a persistent object. Because
‘pickle’ is so widely used,
many authors who write Python extensions take care to ensure that new
data types such as matrices can be properly pickled and unpickled.