gpt4 book ai didi

python - 将 Pyhon 2 转换为 Python 3 时的编码问题(使用 lmdb)

转载 作者:行者123 更新时间:2023-12-01 08:48:15 39 4
gpt4 key购买 nike

我正在尝试将 Python 2 中的一些代码转换为 Python 3。我不太熟悉两个版本的 Python 之间编码工作方式的变化,因此不太确定如何表达这个问题。

基本上,在 Python 2 中,代码如下所示:

image_key = "image_3"
env = lmdb.open(some arguments here)

with env.begin(write=False) as txn:
img_tmp = txn.get(image_key)
img = Image.open(StringIO(img_tmp))

在Python 2中,“img_tmp”将是一个带有不可读字符的字符串对象(打印它让我一团糟:“PNGIHDR �A�� gAMA �� �acHRMz&��� ��u0�`...) 。下一行会将图像作为枕头图像打开。

在Python 3中,txn.get()行会给我一个错误“TypeError:不会隐式地将Unicode转换为字节;使用.encode()”,所以我遵循了建议并将该行转换为:

img_tmp = txn.get(img_key.encode())

但是,img_tmp 现在是一个字节对象,读取如下内容:“b'\x89PNG\r\n\x1a\n\x00\...”

下一行将不再打开图像。关于如何更改代码以使其正常工作有什么建议吗?

最佳答案

你就快到了:只需使用 BytesIO 而不是 StringIO,因为你的二进制数据是 bytes 而不是 str.

关于python - 将 Pyhon 2 转换为 Python 3 时的编码问题(使用 lmdb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53228180/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com