如何将 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())
在 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())