Python如何删除JSON对象中的指定数组?现有代码运行失效怎么解决?
问题原因
- 你第二次打开文件使用的
r+模式是读写模式,写入时只会从指针位置开始覆盖原有内容,不会清空文件原有的全部内容。修改后的JSON结构比原文件短,就会残留旧文件末尾的多余字符,导致最终JSON格式错误,看起来就像删除操作没生效。 - 你修改完字典后要全量更新JSON文件,直接用
w写入模式更合适,w模式会直接清空原有内容后写入新内容,完全覆盖旧文件。
修正后的代码
import json # 第一步:读取文件内容 with open('numbers.json', 'r') as json_string: conv_json = json.load(json_string) # 第二步:删除指定键 del conv_json["numlist2"] # 第三步:用w模式写入,直接覆盖整个文件 with open('numbers.json', 'w') as json_string: json.dump(conv_json, json_string, indent=2)
可选优化方案:单次打开文件完成读写
如果你不想打开两次文件,也可以用r+模式配合指针移动和清空操作实现:
import json with open('numbers.json', 'r+') as f: # 读取内容 conv_json = json.load(f) # 删除键 del conv_json["numlist2"] # 将文件指针移到开头 f.seek(0) # 写入新内容 json.dump(conv_json, f, indent=2) # 截断文件,清除指针后面残留的旧内容 f.truncate()
内容的提问来源于stack exchange,提问作者user509OZ
相关产品推荐
相关产品推荐

