使用Python修改、删除JSON原有字段并保存为新文件的操作问题
Python操作JSON文件问题解答
问题根源
你当前使用的JSON是嵌套字典结构,顶层只有block一个键,所有属性都存放在该键对应的子字典中。你直接对顶层的json_object赋值,自然会在顶层新增键,而非修改嵌套在内层的原有字段。
字段修改/删除方法
- 修改已有嵌套字段:补全字段的层级路径即可
示例代码:# 修改snow字段的值 json_object["block"]["snow"] = True # 修改coordinates字段的值 json_object["block"]["coordinates"] = {'y' : 186, 'x' : 96, 'z' : 1041} - 删除字段:使用
del关键字指定要删除的字段路径即可
示例代码:# 删除不需要的luminant字段 del json_object["block"]["luminant"]
保存为新文件的方法
是的,只要修改open方法传入的文件名参数即可,比如要保存为new_gras_blok.json,就把写入阶段的文件名改为对应名称即可,不会覆盖原文件。
代码优化建议
推荐使用with上下文管理器操作文件,无需手动调用close(),可避免文件句柄泄漏,优化后的完整可运行代码如下:
import json # 读取原有JSON文件 with open("gras_blok.json", "r") as f: json_object = json.load(f) # 修改目标字段 json_object["block"]["snow"] = True json_object["block"]["coordinates"] = {'y' : 186, 'x' : 96, 'z' : 1041} # 如果需要删除字段,取消注释下一行即可 # del json_object["block"]["luminant"] # 保存为新JSON文件,indent参数可格式化输出JSON,提升可读性 with open("new_gras_blok.json", "w") as f: json.dump(json_object, f, indent=4)
内容的提问来源于stack exchange,提问作者Lars Medendorp
相关产品推荐
相关产品推荐

