我正在尝试将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\…”
下一行将不再打开图像。关于如何更改代码使其正常工作有什么建议吗?在
您就快到了:只需使用
BytesIO
而不是StringIO
,因为您的二进制数据是bytes
,而不是str
。在相关问题 更多 >
编程相关推荐