pprint module提供了可以按照某个格式正确的显示python已知类型数据的一种方法,这种格式可被解析器解析, 又很易读。 但是,如果已知格式的数据对象不是python的基础类型,这种表示方法就有可能加载失败。这种情况一般是对象为 files, sockets, classes, or instances are included, as well as many other built-in objects which are not representable as Python constants。
该方法输出将对象的输出分隔成单行显示,并在宽度设置不适合时,将其分成多行显示。
class pprint .PrettyPrinter ( indent=1 ,width=80 ,depth=None ,stream=None )
pprint .
pformat
(
object ,
indent=1 ,
width=80 ,
depth=None
)仅仅想获得数据而不是输出数据也可以用pformat
Return the formatted representation of object as a string. indent ,width anddepth will be passed to thePrettyPrinter constructor as formatting parameters.
pprint .
pprint
(
object
,
stream=None
,
indent=1
,
width=80
,
depth=None
)
Prints the formatted representation of object on stream , followed by anewline.
pprint .
isreadable
(
object
)
Determine if the formatted representation of object is “readable,” or can be used to reconstruct the value usingeval() . This always returnsFalse for recursive objects.
>>> import sys >>> import pprint >>> pprint.pprint(sys.path) ['D:/Python/tmp' , 'D:\\Python\\tmp' , 'C:\\Python27\\Lib\\idlelib' , 'C:\\Python27\\lib\\site-packages\\zope.interface-4.0.0-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\pyopenssl-0.13-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\scrapy-0.14.4-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\w3lib-1.2-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\mysql_python-1.2.3-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\paramiko-1.9.0-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\pycrypto-2.6-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\requests-2.0.0-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\reportlab-2.7-py2.7-win32.egg' , 'C:\\Windows\\system32\\python27.zip' , 'C:\\Python27\\DLLs' , 'C:\\Python27\\lib' , 'C:\\Python27\\lib\\plat-win' , 'C:\\Python27\\lib\\lib-tk' , 'C:\\Python27' , 'C:\\Python27\\lib\\site-packages' , 'C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode' ] >>> print sys.path ['D:/Python/tmp' , 'D:\\Python\\tmp' , 'C:\\Python27\\Lib\\idlelib' , 'C:\\Python27\\lib\\site-packages\\zope.interface-4.0.0-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\pyopenssl-0.13-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\scrapy-0.14.4-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\w3lib-1.2-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\mysql_python-1.2.3-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\paramiko-1.9.0-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\pycrypto-2.6-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\requests-2.0.0-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\reportlab-2.7-py2.7-win32.egg' , 'C:\\Windows\\system32\\python27.zip' , 'C:\\Python27\\DLLs' , 'C:\\Python27\\lib' , 'C:\\Python27\\lib\\plat-win' , 'C:\\Python27\\lib\\lib-tk' , 'C:\\Python27' , 'C:\\Python27\\lib\\site-packages' , 'C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode' ] >>> string = pprint.pformat(sys.path) >>> string "['D:/Python/tmp',\n 'D:\\\\Python\\\\tmp',\n 'C:\\\\Python27\\\\Lib\\\\idlelib',\n 'C:\\\\Python27\\\\lib\\\\site-packages\\\\zope.interface-4.0.0-py2.7-win32.egg',\n 'C:\\\\Python27\\\\lib\\\\site-packages\\\\pyopenssl-0.13-py2.7-win32.egg',\n 'C:\\\\Python27\\\\lib\\\\site-packages\\\\scrapy-0.14.4-py2.7.egg',\n 'C:\\\\Python27\\\\lib\\\\site-packages\\\\w3lib-1.2-py2.7.egg',\n 'C:\\\\Python27\\\\lib\\\\site-packages\\\\mysql_python-1.2.3-py2.7-win32.egg',\n 'C:\\\\Python27\\\\lib\\\\site-packages\\\\paramiko-1.9.0-py2.7.egg',\n 'C:\\\\Python27\\\\lib\\\\site-packages\\\\pycrypto-2.6-py2.7-win32.egg',\n 'C:\\\\Python27\\\\lib\\\\site-packages\\\\requests-2.0.0-py2.7.egg',\n 'C:\\\\Python27\\\\lib\\\\site-packages\\\\reportlab-2.7-py2.7-win32.egg',\n 'C:\\\\Windows\\\\system32\\\\python27.zip',\n 'C:\\\\Python27\\\\DLLs',\n 'C:\\\\Python27\\\\lib',\n 'C:\\\\Python27\\\\lib\\\\plat-win',\n 'C:\\\\Python27\\\\lib\\\\lib-tk',\n 'C:\\\\Python27',\n 'C:\\\\Python27\\\\lib\\\\site-packages',\n 'C:\\\\Python27\\\\lib\\\\site-packages\\\\wx-2.8-msw-unicode']" >>> print string ['D:/Python/tmp' , 'D:\\Python\\tmp' , 'C:\\Python27\\Lib\\idlelib' , 'C:\\Python27\\lib\\site-packages\\zope.interface-4.0.0-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\pyopenssl-0.13-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\scrapy-0.14.4-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\w3lib-1.2-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\mysql_python-1.2.3-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\paramiko-1.9.0-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\pycrypto-2.6-py2.7-win32.egg' , 'C:\\Python27\\lib\\site-packages\\requests-2.0.0-py2.7.egg' , 'C:\\Python27\\lib\\site-packages\\reportlab-2.7-py2.7-win32.egg' , 'C:\\Windows\\system32\\python27.zip' , 'C:\\Python27\\DLLs' , 'C:\\Python27\\lib' , 'C:\\Python27\\lib\\plat-win' , 'C:\\Python27\\lib\\lib-tk' , 'C:\\Python27' , 'C:\\Python27\\lib\\site-packages' , 'C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode' ] >>>
>>> stuff = [ 'spam' , 'eggs' , 'lumberjack' , 'knight' , 'ni' ] >>> pprint.pprint(stuff) ['spam' , 'eggs' , 'lumberjack' , 'knight' , 'ni' ] >>> print stuff ['spam' , 'eggs' , 'lumberjack' , 'knight' , 'ni' ] >>> stuff.insert(0 ,stuff) >>> pprint.pprint(stuff) [<Recursion on list with id=33573024 >, 'spam' , 'eggs' , 'lumberjack' , 'knight' , 'ni' ] >>> print stuff [[...], 'spam' , 'eggs' , 'lumberjack' , 'knight' , 'ni' ] >>>
>>> pprint.isreadable(stuff) False >>> pprint.isreadable(sys.path) True >>>
# This example demonstrates several uses of the pprint() function and its parameters.
如下例,依次为:
#list中包含tuple #按照指定深度来显示stuff内容 #The number of levels which may be printed is controlled by depth; i
f the data structure being printed is too deep, the next contained level is replaced by .... #The desired output width is constrained using the width parameter; the default is 80 characters.
If a structure cannot be formatted within the constrained width, a best effort will be made.
>>> tup = ( 'spam' ,( 'eggs' ,( 'lumberjack' ,))) >>> stuff = ['a' * 5 , tup, [ 'b' * 5 , 'c' * 5 ],[ 'c' * 5 , 'd' * 5 ]] >>> stuff ['aaaaa' , ( 'spam' , ( 'eggs' , ( 'lumberjack' ,))), [ 'bbbbb' , 'ccccc' ], [ 'ccccc' , 'ddddd' ]] >>> pprint.pprint(stuff) ['aaaaa' , ('spam' , ( 'eggs' , ( 'lumberjack' ,))), ['bbbbb' , 'ccccc' ], ['ccccc' , 'ddddd' ]] >>> pprint.pprint(stuff,depth=3 ) ['aaaaa' , ( 'spam' , ( 'eggs' , (...,))), [ 'bbbbb' , 'ccccc' ], [ 'ccccc' , 'ddddd' ]] >>> pprint.pprint(stuff,depth=4 ) ['aaaaa' , ('spam' , ( 'eggs' , ( 'lumberjack' ,))), ['bbbbb' , 'ccccc' ], ['ccccc' , 'ddddd' ]] >>> pprint.pprint(stuff,depth=2 ) ['aaaaa' , ( 'spam' , (...)), [ 'bbbbb' , 'ccccc' ], [ 'ccccc' , 'ddddd' ]] >>> pprint.pprint(stuff,width=40 ) ['aaaaa' , ('spam' , ( 'eggs' , ( 'lumberjack' ,))), ['bbbbb' , 'ccccc' ], ['ccccc' , 'ddddd' ]] >>> pprint.pprint(stuff,width=80 ) ['aaaaa' , ('spam' , ( 'eggs' , ( 'lumberjack' ,))), ['bbbbb' , 'ccccc' ], ['ccccc' , 'ddddd' ]] >>> pprint.pprint(stuff,width=3 ) ['aaaaa' , ('spam' , ('eggs' , ('lumberjack' ,))), ['bbbbb' , 'ccccc' ], ['ccccc' , 'ddddd' ]] >>>
总的来说,感觉目前用处不是很大,没有什么特别的地方,就是对输出的一种格式化。