漂亮打印到文件?

Posted

技术标签:

【中文标题】漂亮打印到文件?【英文标题】:Prettyprint to a file? 【发布时间】:2013-06-21 06:12:11 【问题描述】:

我正在使用这个gist's 树,现在我正在尝试弄清楚如何将漂亮打印到文件中。有什么建议吗?

【问题讨论】:

输出格式是否有些相关(除了正确格式化)? 与将其他内容写入文件的方式相同,不是吗? @Stefano 有多个key和value,格式上要清楚。 @MattBall 如果我用 .write() 打印它,输出基本上都是一行 - 完全不可读。 【参考方案1】:

您需要的是 Pretty Print pprint 模块:

from pprint import pprint

# Build the tree somehow

with open('output.txt', 'wt') as out:
    pprint(myTree, stream=out)

【讨论】:

不工作了,看来你需要在 pprint.PrettyPrinter() 的构造函数中传递流,就像这样pp = pprint.PrettyPrinter(stream=open("thing",'w')) 不适用于 Python 3.6.5。输出是一个列表,而不是在屏幕上漂亮打印的图表。 使用 Python 3.7.2 为我工作。 在 python 3.9 中也适用于我【参考方案2】:

如果我理解正确,您只需将文件提供给pprint 上的stream 关键字:

from pprint import pprint

with open(outputfilename, 'w') as fout:
    pprint(tree, stream=fout, **other_kwargs)

【讨论】:

【参考方案3】:

另一个通用替代方法是 Pretty Print 的 pformat() 方法,它创建一个漂亮的字符串。然后,您可以将其发送到文件中。例如:

import pprint
data = dict(a=1, b=2)
output_s = pprint.pformat(data)
#          ^^^^^^^^^^^^^^^
with open('output.txt', 'w') as file:
    file.write(output_s)

【讨论】:

很好,谢谢,虽然我更喜欢:with open('output.txt','w') as output: output.write(pprint.pformat(data)) @Andrew - 绝对!一个好的上下文块永远是最好的选择!我将更新我的答案,使其成为更好的编程示例。【参考方案4】:
import pprint
outf = open("./file_out.txt", "w")
PP = pprint.PrettyPrinter(indent=4,stream=outf)
d = 'a':1, 'b':2
PP.pprint(d)
outf.close()

如果没有 Python 3.9 中的这种语法,接受的答案中的 stream= 将无法正常工作。因此有了新的答案。您也可以改进使用 with 语法来改进这一点。

import pprint
d = 'a':1, 'b':2
with open('./test2.txt', 'w+') as out:
    PP = pprint.PrettyPrinter(indent=4,stream=out)
    PP.pprint(d)

【讨论】:

以上是关于漂亮打印到文件?的主要内容,如果未能解决你的问题,请参考以下文章

XML日志文件打印到漂亮[重复]

如何让 Python 的 ElementTree 漂亮地打印到 XML 文件?

使用 Python 将 JSON 数据漂亮地打印到文件中

温斯顿不能漂亮地打印到控制台

漂亮的打印 JSON python

如何有效地漂亮打印 JSON 对象列表? [复制]