使用协议2进行酸洗:Python3-> 2数据

coh*_*hoz 6 python pickle python-2.7 python-3.x

我试图数据在Python3.2中创建的数据数组,pickle它,然后在Python2.7中打开它.但是,有一部分数据是Python2.7所反对的,即使在数据样本上它做得很好,我想知道如何弄清楚出了什么问题.

所以在Python3.2中:

import pickle
with open('c:\\test.pickle', mode='wb') as f:
    pickle.dump(t_array, f, 2)
Run Code Online (Sandbox Code Playgroud)

然后,在Python2.7中阅读时:

import pickle
f = open('c:\\test.pickle', mode='rb')
t_data = pickle.load(f)
Run Code Online (Sandbox Code Playgroud)

错误是:

File "C:\Python27\lib\pickle.py", line 1378, in load
    return Unpickler(file).load()
File "C:\Python27\lib\pickle.py", line 858, in load
    dispatch[key](self)
File "C:\Python27\lib\pickle.py", line 1217, in load_build
    setstate(state)
TypeError: must be char, not unicode
Run Code Online (Sandbox Code Playgroud)

数据是一个dicts数组,最多嵌套两个,例如:

{'key3': '3', 'key2': 1.1, 'key1': 1, 'dict': {'dkey2': 2, 'dkey1': 1}}
Run Code Online (Sandbox Code Playgroud)

什么(可能)在这里出错了?有没有简单的方法来查看原始(大型)数据集中的原因是什么?

orl*_*rlp 2

泡菜并不像看起来那么好。安全漏洞和许多类似的问题。

更好的想法是创建自己的保存格式,例如使用 json。