繁体   English   中英

如何将 pprint 输出作为字符串而不是打印在标准输出上?

[英]How to get the pprint output as string and not printed on stdout?

在 python 3.6.8 中,我希望pprint的输出没有打印到屏幕上(例如stdout ),但我希望该输出作为变量中的字符串。

我尝试了以下(完整示例):

import io
import pprint

d = {'cell_type': 'code',
   'execution_count': None,
   'metadata': {'collapsed': True, 'trusted': True},
   'outputs': []
}
f = io.StringIO()
pprint.pprint(dict, f)
print(f.read())

但我刚得到一个空字符串。 我期待一个输出

{'cell_type': 'code',
 'execution_count': None,
 'metadata': {'collapsed': True, 'trusted': True},
 'outputs': []}

反而。

也许有一种更简单的方法可以在没有流的情况下实现这一目标?

最后我想比较两个非常复杂的词典,看看它们的区别。 我的想法:生成 dict 的字符串版本并进行比较(与 bash diff类的东西)。

您在阅读之前没有移动文件指针。

f = io.StringIO()
pprint.pprint(d, f) # note: pass d and not dict
f.seek(0) # move pointer to start of file
print(f.read())

要不就

print(f.getvalue())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM