我正在尝试将python2代码转换为python3。我在Python2.7中使用了pickle.loads
函数,根据其文档,该函数执行以下操作(https://docs.python.org/2.7/library/pickle.html):
pickle.loads(string)
Read a pickled object hierarchy from a string. Characters in the
string past the pickled object’s representation are ignored.
但是它在python3(https://docs.python.org/3/library/pickle.html)中的行为发生了变化:
^{pr2}$在数据库中,我有一个字符串x
,它是在python2中执行的pickle.dumps(obj)
的输出。我想在python3中检索obj
。当我执行pickle.loads(x)
操作时,我收到以下错误:
a bytes-like object is required, not 'str'
将pickle.loads(x)
改为pickle.loads(bytes(x, 'utf-8'))
会产生以下错误:
invalid load key, '\x5c'.
在Python3中,如何从x
获得{
将
pickle.loads(x)
更改为pickle.loads(bytes(x, 'latin-1'))
。在将
pickle.dumps(o)
更改为str(pickle.dumps(o, protocol=0), 'latin-1')
。在相关问题 更多 >
编程相关推荐