繁体   English   中英

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

[英]Encoding issues when converting Pyhon 2 to Python 3 (using lmdb)

我正在尝试将 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 :只需使用BytesIO而不是StringIO ,因为您的二进制数据是bytes而不是str

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM