9.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
string.atoi() , 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 Library Reference.)
‘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.
|