我正在尝试对在Python3.2中创建的数据数组进行数据处理,将其选中,然后在Python2.7中打开它。但是,有一部分数据是Python2.7反对的,即使在数据样本上也没问题,我想知道如何弄清楚出了什么问题。
所以在Python3.2中:
import pickle
with open('c:\\test.pickle', mode='wb') as f:
pickle.dump(t_array, f, 2)
然后,在阅读Python2.7时:
import pickle
f = open('c:\\test.pickle', mode='rb')
t_data = pickle.load(f)
错误是:
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
数据是一组dicts,最多嵌套两个,例如:
{'key3': '3', 'key2': 1.1, 'key1': 1, 'dict': {'dkey2': 2, 'dkey1': 1}}
这里(可能)出了什么问题?有没有简单的方法可以查看原始(大型)数据集中导致问题的原因?
答案 0 :(得分:2)
Pickle并不像它看起来那么好。安全漏洞和许多类似的问题。
更好的想法是创建自己的保存格式,例如使用json。