如何将 pickle.loads 从 Python 2 转换为 Python 3?

How to convert pickle.loads from Python 2 to Python 3?

我正在尝试将 Python 2 代码转换为 Python 3。我在 Python 2.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.

但是它的行为在 Python 3 (https://docs.python.org/3/library/pickle.html) 中发生了变化:

pickle.loads(bytes_object, *, fix_imports=True, encoding="ASCII", errors="strict")
Read a pickled object hierarchy from a bytes object and return the 
reconstituted object hierarchy specified therein.

在数据库中,我有一个字符串 x,它是在 Python 中执行的 pickle.dumps(obj) 的输出 2. 我想在 [=38] 中检索 obj =] 3. 当我执行 pickle.loads(x) 时,我收到以下错误:

a bytes-like object is required, not 'str'

pickle.loads(x) 改为 pickle.loads(bytes(x, 'utf-8')) 会出现以下错误:

invalid load key, '\x5c'.

如何在 Python 3 中从 x 获得 obj

pickle.loads(x) 更改为 pickle.loads(bytes(x, 'latin-1'))

pickle.dumps(o) 更改为 str(pickle.dumps(o, protocol=0), 'latin-1')