Python中如何从外部JSON文件删除密码管理器的登录信息?
解决密码管理器中删除JSON存储的登录信息问题
你当前的代码存在两个核心问题:
- 遍历
data['info']时执行del info,只是删除了循环里的临时变量引用,并没有真正从原列表中移除对应元素 - 修改后的数据没有写回JSON文件,文件内容不会产生任何变化
方案1:创建过滤后的新列表(推荐,代码简洁安全)
直接生成不包含目标URL项的新列表,替换原列表后写回文件:
import json INFO_PATH = "your_file_path.json" # 替换为你的实际文件路径 url = input('Paste Login Page URL Here : ') # 读取JSON数据 with open(INFO_PATH, 'r') as file: data = json.load(file) # 过滤掉匹配目标URL的项 data['info'] = [item for item in data['info'] if item['website_url'] != url] # 将修改后的数据写回文件 with open(INFO_PATH, 'w') as file: json.dump(data, file, indent=4) # indent=4让JSON格式更易读 print("登录信息已删除(存在匹配项时)")
方案2:倒序遍历原列表删除元素
如果要直接在原列表上修改,可采用倒序遍历的方式(避免正向遍历删除元素时的索引错乱问题):
import json INFO_PATH = "your_file_path.json" url = input('Paste Login Page URL Here : ') with open(INFO_PATH, 'r') as file: data = json.load(file) # 倒序遍历列表,删除匹配的元素 for i in range(len(data['info'])-1, -1, -1): if data['info'][i]['website_url'] == url: del data['info'][i] # 写回修改后的数据 with open(INFO_PATH, 'w') as file: json.dump(data, file, indent=4) print("操作完成")
关键注意点
- 必须使用
'w'模式重新打开文件写入,才能覆盖原文件内容 - 两种方案都支持批量删除多个相同URL的项;若只需删除第一个匹配项,可在找到后添加
break语句(仅适用于方案2) - 可额外添加判断逻辑:如果过滤后的列表长度与原列表一致,说明未找到匹配项,给用户提示“未找到对应登录信息”
内容的提问来源于stack exchange,提问作者Lavaa
相关产品推荐
相关产品推荐

