The pprint module provides a capability to ``pretty-print''
arbitrary Python data structures in a form which can be used as input to the interpreter. If
the formatted structures include objects which are not fundamental Python types, the
representation may not be loadable. This may be the case if objects such as files, sockets,
classes, or instances are included, as well as many other builtin objects which are not
representable as Python constants.
The formatted representation keeps objects on a single line if it can, and breaks them onto
multiple lines if they don't fit within the allowed width. Construct PrettyPrinter
objects explicitly if you need to adjust the width constraint.
The pprint module defines one class:
- Construct a PrettyPrinter instance. This constructor understands
several keyword parameters. An output stream may be set using the stream
keyword; the only method used on the stream object is the file protocol's write() method. If not specified, the PrettyPrinter
sys.stdout. Three additional parameters may be used to control the
formatted representation. The keywords are indent, depth, and width.
The amount of indentation added for each recursive level is specified by indent;
the default is one. Other values can cause output to look a little odd, but can make
nesting easier to spot. The number of levels which may be printed is controlled by depth;
if the data structure being printed is too deep, the next contained level is replaced by
"...". By default, there is no constraint on the depth of
the objects being formatted. The desired output width is constrained using the width
parameter; the default is eighty characters. If a structure cannot be formatted within the
constrained width, a best effort will be made.
>>> import pprint, sys
>>> stuff = sys.path[:]
>>> stuff.insert(0, stuff[:])
>>> pp = pprint.PrettyPrinter(indent=4)
[ [ '',
>>> import parser
>>> tup = parser.ast2tuple(
>>> pp = pprint.PrettyPrinter(depth=6)
(266, (267, (307, (287, (288, (...))))))
The PrettyPrinter class supports several derivative functions:
- Return the formatted representation of object as a string. The default
parameters for formatting are used.
- Prints the formatted representation of object on stream, followed
by a newline. If stream is omitted,
sys.stdout is used. This may
be used in the interactive interpreter instead of a print
statement for inspecting values. The default parameters for formatting are used.
>>> stuff = sys.path[:]
>>> stuff.insert(0, stuff)
[<Recursion on list with id=869440>,
- Determine if the formatted representation of object is ``readable,'' or can
be used to reconstruct the value using eval()
. This always returns false for recursive objects.
- Determine if object requires a recursive representation.
One more support function is also defined:
- Return a string representation of object, protected against recursive data
structures. If the representation of object exposes a recursive entry, the
recursive reference will be represented as "<Recursion on typename
with id=number>". The representation is not otherwise formatted.
"[<Recursion on list with id=682968>, '', '/usr/local/lib/python1.5', '/usr/loca
l/lib/python1.5/test', '/usr/local/lib/python1.5/sunos5', '/usr/local/lib/python