为什么有pickle这种操作,并将文件存为.pkl后缀???
因为pickle可以把字典、列表等结构化数据存到本地文件,读取后返回的还是字典、列表等结构化数据。而file.write、file.read存取的对象是字符串。 读取得到的字符串需要再次加工处理才能转换为字典、列表等,所以pickle的存在是为了方便特殊类型数据的保存。
报错:ModuleNotFoundError: No module named 'cPickle'
原因:python2有cPickle,但是在python3下,是没有cPickle的;
解决办法:将cPickle改为pickle即可,但是这样还是出现编码的问题
报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)错误解
原因:python3中的pickle需要指定一下编码
解决办法:见下图
参考文章:
【1】pickle 在python 2和python 3中兼容性问
【2】 Pickle incompatibility of numpy arrays between Python 2 and 3