security
BitwardenPython
从 Bitwarden 导出中删除重复项
Python 脚本,用于清理 Bitwarden CSV 导出中的重复条目
如果你曾经将 Bitwarden 密码库导出为 CSV 文件,并发现其中有重复的条目,这个脚本正好适合你。它会扫描你的导出文件,并基于关键字段删除重复的条目。
问题描述
有时候,当你导出 Bitwarden 密码库时,可能会出现重复的条目——相同的凭据、相同的备注等。这个脚本可以帮助你清理这些重复项,只保留唯一的条目。
工作原理
该脚本会读取你的 Bitwarden CSV 导出文件,根据一组关键字段(类型、名称、URI、用户名、密码和备注)检查每个条目,并仅保留每个唯一组合的第一次出现。非常简单直接!
代码
import csv
input_file = "bitwarden.csv" # name of the file you exported
output_file = "bitwarden_dedup.csv" # new file, without duplicates
seen = set()
rows = []
with open(input_file, newline="", encoding="utf-8") as f:
reader = csv.DictReader(f)
fieldnames = reader.fieldnames
for row in reader:
# key to consider entries "equal"
key = (
row.get("type", ""),
row.get("name", ""),
row.get("login_uri", ""),
row.get("login_username", ""),
row.get("login_password", ""),
row.get("notes", ""),
)
if key in seen:
continue
seen.add(key)
rows.append(row)
with open(output_file, "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(rows)
print(f"saved {len(rows)} items without duplicates in {output_file}")
使用方法
- 将 Bitwarden 密码库导出为 CSV 文件(设置 → 导出密码库)
- 将脚本保存为
bitwarden_dedup.py - 确保你的导出文件命名为
bitwarden.csv(或修改input_file变量) - 运行:
python bitwarden_dedup.py - 将清理后的文件
bitwarden_dedup.csv重新导入 Bitwarden
检查的字段
如果所有以下字段都匹配,脚本会将两个条目视为重复项:
- 类型(登录、备注、卡片等)
- 名称
- 登录 URI
- 用户名
- 密码
- 备注
如果其中一个字段不同,则会将这些条目保留为单独的项目。
重要说明
在进行任何清理操作之前,请务必备份你的密码库。在导入去重后的密码库之前,先导出当前的密码库,以确保安全。
如果你希望基于不同的字段(例如仅用户名 + URI)检查重复项,可以修改代码中的
key元组,仅包含你关心的字段。
该脚本使用 Python 内置的 csv 模块和 set 来跟踪已处理的条目,即使对于大型密码库也非常高效。