Python _winreg.QueryValuex返回“;混合型;二进制值
在Python3.4下,我使用Python _winreg.QueryValuex返回“;混合型;二进制值,python,python-3.x,registry,winreg,Python,Python 3.x,Registry,Winreg,在Python3.4下,我使用winreg.QueryValueEx()从注册表中获取键值,以便将其与文本文件进行比较。 我遇到了一个问题,REG\u二进制键值是字节,但其中有unicode值: 预期注册表项值-52 50 43 46 01 1b 00 00 ff fe ff 04 46 00 6c 00 61 返回键值-b'RPCF\x01\x1b\x00\x00\x00\xff\xfe\xff\x04F\x00l\x00a\x00t\x00\x00\n\x00\x8b…(粗体显示了一些有问
winreg.QueryValueEx()
从注册表中获取键值,以便将其与文本文件进行比较。
我遇到了一个问题,REG\u二进制
键值是字节
,但其中有unicode值:
- 预期注册表项值-52 50 43 46 01 1b 00 00 ff fe ff 04 46 00 6c 00 61
- 返回键值-b'RPCF\x01\x1b\x00\x00\x00\xff\xfe\xff\x04F\x00l\x00a\x00t\x00\x00\n\x00\x8b…(粗体显示了一些有问题的值)
- 尝试了一些decode\encode选项,由于混合类型(例如
返回key\u val.decode('utf-8')
){UnicodeDecodeError}'utf-8'编解码器无法解码位置9的字节0xff:无效的开始字节
str
和bytes
分开有关,甚至与Python3中winreg中的一个bug有关
如果您能提供任何帮助和提示,以便将其统一为单一类型,我们将不胜感激。
谢谢 看起来注册表中的数据甚至不是unicode。 你甚至需要把它解码成unicode码吗 为什么不将数据存储在二进制文件中
bytes_data = winreg.QueryValueEx(your_key)
with open("filename.txt", "wb") as stream:
stream.write(bytes_data)
看起来注册表中的数据甚至不是unicode。 你甚至需要把它解码成unicode码吗 为什么不将数据存储在二进制文件中
bytes_data = winreg.QueryValueEx(your_key)
with open("filename.txt", "wb") as stream:
stream.write(bytes_data)
为什么你认为粗大的价值观是有问题的?您试图如何处理失败的返回值?您可以学习并创建一个示例。这使我们更容易帮助您。我希望这些值是\x52\x50\x43\x46,而不是RPCF,例如,所有字节的格式都相同。添加了使用返回值的信息。这些值实际上是相同的。您只是看到了Python如何显示字符串与字节的工件。为什么您认为粗大的值有问题?您试图如何处理失败的返回值?您可以学习并创建一个示例。这使我们更容易帮助您。我希望这些值是\x52\x50\x43\x46,而不是RPCF,例如,所有字节的格式都相同。添加了使用返回值的信息。这些值实际上是相同的。您只是看到了python如何显示字符串和字节的人工制品。谢谢Nir!我只是将读取的字节数组与从引用中读取的字节数组进行了比较,不需要解码\编码!:)谢谢你!我只是将读取的字节数组与从引用中读取的字节数组进行了比较,不需要解码\编码!:)