如何使用Python将JSON中的folder_path键重命名为backup_folder_path
解决JSON文件中键重命名的问题
原代码的问题
你的代码存在几个关键错误,导致无法实现需求:
- 覆盖了原JSON数据:
data = {'folder_path'}这行代码直接把从文件加载的完整JSON数据替换成了一个仅包含'folder_path'的集合,完全丢失了原文件内容。 - 未遍历目标字典:原JSON的结构是外层为多个URN键,每个键对应的值才是包含
folder_path的字典,你没有遍历这些内层字典进行处理。 - 未将修改写回文件:即使修改了内存中的数据,也没有把更新后的内容保存回原JSON文件。
正确的实现代码
以下是可以实现将所有folder_path重命名为backup_folder_path的Python代码:
import json def rename_folder_path_key(): # 加载JSON文件 with open(r"smth.json", encoding="utf-8") as json_file: data = json.load(json_file) # 遍历每个外层URN对应的字典 for urn_dict in data.values(): # 检查是否存在folder_path键,存在则重命名 if "folder_path" in urn_dict: urn_dict["backup_folder_path"] = urn_dict.pop("folder_path") # 将修改后的数据写回文件 with open(r"smth.json", "w", encoding="utf-8") as json_file: json.dump(data, json_file, indent=2, ensure_ascii=False) print("键重命名完成,文件已更新") if __name__ == '__main__': rename_folder_path_key()
代码说明
- 使用
json.load()加载文件内容到字典后,通过data.values()遍历每个内层的字典(每个URN对应的条目)。 - 用
dict.pop()方法取出folder_path的值,同时删除该键,再将值赋值给新键backup_folder_path。 - 最后用
json.dump()将修改后的数据写回文件,indent=2保证输出的JSON格式美观,ensure_ascii=False支持保存非ASCII字符(比如你的示例中的/foo/barС)。
内容的提问来源于stack exchange,提问作者SwAsKk
相关产品推荐
相关产品推荐

