The pickle Module
The pickle module, shown in Example 4-11, is used to serialize data—that is, convert data to and
from character strings, so that they can be stored on file or sent
over a network. It’s a bit slower than marshal,
but it can handle class instances, shared elements, and recursive data
structures, among other things.
Example 4-11. Using the pickle Module
File: pickle-example-1.py
import pickle
value = (
"this is a string",
[1, 2, 3, 4],
("more tuples", 1.0, 2.3, 4.5),
"this is yet another string"
)
data = pickle.dumps(value)
# intermediate format
print type(data), len(data)
print "-"*50
print data
print "-"*50
print pickle.loads(data)
<type 'string'> 121
--------------------------------------------------
(S'this is a string'
p0
(lp1
I1
aI2
aI3
aI4
a(S'more tuples'
p2
F1.0
F2.3
F4.5
tp3
S'this is yet another string'
p4
tp5
.
--------------------------------------------------
('this is a string', [1, 2, 3, 4], ('more tuples',
1.0, 2.3, 4.5), 'this is yet another string')On the other hand, pickle cannot handle code
objects (but see the copy_reg module for a way
to fix this).
By default, pickle uses a text-based format. You can also use a
binary format, in which numbers and binary strings are stored in a
compact binary format. The binary format usually results in smaller
files. This is demonstrated in Example 4-12.
Example 4-12. Using the pickle Module in Binary Mode
File: pickle-example-2.py import pickle import math value = ( "this is a long string" * 100, [1.2345678, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access