Python保存json文件并格式化

3,673 阅读1分钟

问题:在json库进行json文件输出的时候,json文本文件总是输出成一行,怎样进行格式化输出?

用json文件存储些文件属性什么的,发现用json包里的json.dump()方法存json文件的效果~全都在一行,失去了json的字典结构化的灵魂,然后,发现其实json.dump()方法其实只需要设置一个参数就达到格式化的效果了……

json.dump()

直接把常用参数列一下好了

参数名解释
obj要存入json文件的python对象
fp文件句柄
ensure_ascii设置为False的话才可以把中文以中文的形式存到文件里,否则会是’\xXX\xXX’这种
indent缩进的空格数,设置为非零值时,就起到了格式化的效果,比较美观

这里我是用的是jumps,同理,indent也可以将输出的json格式化

with open("xxxxxx.json","w") as f:
    f.write(json.dumps(dict,indent=4))

也就是说在使用json.dump()的时候设置一下indent参数的值就好了。比如json.dump(json_dict, f, indent=4),加与不加的区别如下:

不加参数

{"file_name:": "EBO-EBO-E46_EA106A.png", "words_block_count": "3", "info": [{"text:": "X10106", "scores:": "0.99761707", "boxes:": [[34.0, 10.0], [90.0, 10.0], [90.0, 23.0], [34.0, 23.0]]}]}

加上参数

{
    "file_name:": "EBO-EBO-E46_EA106A.png",
    "words_block_count": "3",
    "info": [
        {
            "text:": "X10106",
            "scores:": "0.99761707",
            "boxes:": [
                [
                    34.0,
                    10.0
                ],
                [
                    90.0,
                    10.0
                ],
                [
                    90.0,
                    23.0
                ],
                [
                    34.0,
                    23.0
                ]
            ]
        }
    ]
}