使用pykeepass给KeePass添加TXT附件时遇类型错误,如何处理?
解决pykeepass添加附件时的TypeError错误
你遇到的错误是因为pykeepass 4.1.0.post1版本存在参数传递bug,将附件内容(bytes类型)错误传入了需要字符串的E.Key()方法;或是Python 3.13与该版本库的兼容性问题。以下是几种解决方案:
1. 升级pykeepass到最新版本
旧版本的bug在后续版本中已修复,执行以下命令升级:
pip install --upgrade pykeepass
升级后无需修改原代码,直接运行即可。
2. 手动构造附件元素
如果无法升级,可绕过add_attachment方法,手动创建附件节点:
from pykeepass import PyKeePass from lxml.builder import ElementMaker import base64 E = ElementMaker(namespace='http://keepass.info/XML/1.0', nsmap={'': 'http://keepass.info/XML/1.0'}) kp = PyKeePass('testDatabase.kdbx', password='passwort') generalGroup = kp.find_groups(name='General', first=True) entry = kp.add_entry( generalGroup, title='title', username='username', password='password', ) with open('loremipsum.txt', 'rb') as f: att_data = f.read() # 构建附件XML元素 attachment = E.Attachment( E.Key('attachment.txt'), E.Value(base64.b64encode(att_data).decode('utf-8')) ) entry.attachments.append(attachment) kp.save()
3. 降级Python版本
若为Python 3.13兼容性问题,可尝试降级至Python 3.12版本,再运行原代码。
内容的提问来源于stack exchange,提问作者Simplicissimus
相关产品推荐
相关产品推荐

