将pyhon2转换为python3时的编码问题(使用lmdb)

2024-03-28 20:06:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将python2中的一些代码转换为python3。我不太熟悉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))

在Python2中,“img峎tmp”将是一个带有不可读字符的字符串对象(打印它会给我带来混乱:PNGIHDR、a、gAMA、acHRMz&;)、u0`。下一行将打开枕头图像。在

在Python3中,行txn.get公司()会给我一个错误“TypeError:不会隐式将Unicode转换为字节;请使用.encode()”,因此我按照建议将行转换为:

^{pr2}$

但是,img_tmp现在是一个bytes对象,其内容如下:“b'\x89PNG\r\n\x1a\n\x00\…”

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


Tags: 对象key代码图像image版本envimg
1条回答
网友
1楼 · 发布于 2024-03-28 20:06:14

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

相关问题 更多 >