Python3修改JSON文件指定键值并维护文件完整性的技术咨询
JSON文件修改的正确写法与文件模式解析
两种JSON写入写法的对比
- 错误写法(嵌套
json.dumps+json.dump):这种写法完全不符合JSON规范,json.dumps(data)已经把Python对象转成了JSON字符串,再用json.dump写入时,会把这个字符串当成普通文本处理,自动添加转义字符,最终生成的文件是“JSON字符串嵌套JSON”的冗余格式,不仅体积翻倍,后续用json.load读取时还会报错,因为内容不是标准JSON结构。 - 正确写法(直接
json.dump(data, jf)):这是Python处理JSON文件的标准写法,json.dump会直接将Python对象序列化为标准JSON格式写入文件,生成的文件体积小、结构合法,后续可以直接用json.load读取,完全符合Python的代码风格。
文件完整性说明
只要操作过程中没有出现磁盘故障、程序崩溃等异常,直接用json.dump写入的文件是完整的标准JSON,不会有完整性问题;而嵌套写法生成的是无效的JSON文件,相当于内容损坏,无法正常解析。
文件打开模式r+和w+的含义
r+:读写模式,要求文件必须存在。打开后文件指针默认在文件开头。如果直接写入,会从开头开始覆盖原有内容;如果要修改整个文件,需要先读取全部内容,修改后将指针移到开头(jf.seek(0)),写入新内容后还要调用jf.truncate()截断多余的旧内容,否则原文件中未被覆盖的部分会残留,导致文件内容混乱。w+:读写模式,文件不存在则创建,存在则直接清空原有内容。打开后文件指针在开头,写入的新内容会完全替换原文件,不需要处理截断操作,是修改整个JSON文件时更常用、更省心的模式。
内容的提问来源于stack exchange,提问作者noydb
相关产品推荐
相关产品推荐

