RML2016.10a_dict.pkl 调制信号数据集是由布拉德利大学的TimothyJO'Shea公开的,最近在进行毕设,需要用到,没想到想打开看看数据长啥样就遇到了好多坑。。。。
第一个就是建议要把py文件和数据集pkl放在同一个地方,要不然这个path就乱七八糟的,反正我是没搞清楚。。。
1、python3不用cPickle
import cPickle as pk
f = open('RML2016.10a_dict.pkl')
data = pk.load(f)
print (data)
错误显示:ImportError: No module named 'cPickle'
这是因为python3不是cPickle,改为pickle
2、打开文件用r还是rb???
import pickle as pk
f = open('RML2016.10a_dict.pkl','r')
data = pk.load(f)
print (data)
错误显示:TypeError: a bytes-like object is required, not 'str'
注意rb和r的区别,rb是打开二进制文件,r是打开文本文件,那就改成rb试试。
3、改成rb还是不行???
import pickle as pk
f = open('RML2016.10a_dict.pkl','rb')
data = pk.load(f)
print (data)
错误显示:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc1 in position 2: ordinal not in range(128)
查了说是这是python2的数据集用在了python3,需要通过函数encode转换。
4、加入encode
import pickle as pk
f=open('RML2016.10a_dict.pkl','rb')
data=pk.load(f,encoding='latin1')
print(data)
显示成功!
感觉这东西真的要多实践,原来就是只学理论,结果一编程实现就够呛。。。。不说了接着去写论文了