|An Introduction to Python|
by Guido van Rossum and Fred L. Drake, Jr.
Paperback (6"x9"), 124 pages
RRP £12.95 ($19.95)
Sales of this book support the Python Software Foundation! Get a printed copy>>>
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
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:
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.
|ISBN 0954161769||An Introduction to Python||See the print edition|