Python3开发基础密码管理器触发not enough values to unpack报错
报错原因分析
这个ValueError: not enough values to unpack (expected 3, got 1)错误触发的核心原因是:你在vedi()函数中写了dominio, user, passw = data.split("|"),这行代码要求每行文本用|分割后必须刚好得到3个元素,才能分别赋值给三个变量,但当前读取到的某行分割后只有1个元素,匹配不上。
导致出现异常行的常见场景:
- 存储密码的
5f4dcc3b5aa765d61d8327deb882cf99.txt文件中存在空行 - 之前写入数据时程序中途中断,产生了没有完整写入
域名|用户名|加密密码格式的残缺行 - 手动编辑过该存储文件,不小心删掉了某行的
|分隔符
修复方法
第一步:清理异常数据
先找到项目目录下的5f4dcc3b5aa765d61d8327deb882cf99.txt文件:
- 如果里面的测试数据没用,可以直接删除整个文件,程序后续运行会自动生成新的合规文件
- 如果需要保留已有数据,就打开文件删掉里面的空行、缺少
|分隔符的残缺行即可
第二步:优化代码避免后续复发
给vedi()函数增加格式校验逻辑,遇到不符合格式的行直接跳过不处理,不会打断程序运行,修改后的函数代码如下:
def vedi(): with open("5f4dcc3b5aa765d61d8327deb882cf99.txt", "r") as f: for line in f.readlines(): data = line.rstrip() # 跳过空行 if not data: continue parts = data.split("|") # 校验格式是否符合要求 if len(parts) != 3: print(f"跳过格式异常的行:{data}") continue dominio, user, passw = parts print("Dominio: ", dominio,"User: ", user, "| Password: ", fernet.decrypt(passw.encode()).decode())
内容的提问来源于stack exchange,提问作者petrux
相关产品推荐
相关产品推荐

