我想使用pprint的输出来显示复杂的数据结构,但我想使用日志模块而不是stdout输出它。
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
答案 0 :(得分:156)
使用pprint.pformat
获取字符串,然后将其发送到日志框架。
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
答案 1 :(得分:14)
上面的解决方案并没有完全为我剪切它,因为我还使用格式化程序在记录时添加名称和级别名称。它看起来有点凌乱:
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
'bbbbbbbbbbbbbbbbbbbb',
'cccccccccccccccccccc',
'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text
可能有更优雅的解决方案,但是:
for line in pprint.pformat(ds).split('\n'):
logging.debug(line)
产生更好的东西:
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
__main__ : DEBUG : 'bbbbbbbbbbbbbbbbbbbb',
__main__ : DEBUG : 'cccccccccccccccccccc',
__main__ : DEBUG : 'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text