首先 写出StrToBytes类
然后注意 在pickle.load()函数这里 加入编码格式,一开始的open函数 可以先不写编码格式。便可以正常打开
class StrToBytes:
def __init__(self, fileobj):
self.fileobj = fileobj
def read(self, size):
return self.fileobj.read(size).encode()
def readline(self, size=-1):
return self.fileobj.readline(size).encode()
with open('E:\\A_MultiModal_Code\\EANN-KDD18\\Data\\weibo\\w2v.pickle', 'r',
errors='ignore') as file:
# model = pickle.load(file, encoding='iso-8859-1')
model = pickle.load(StrToBytes(file), encoding='iso-8859-1')
num = 0
for k, v in model.items():
print("键是:", k, "\n数值是:\n", v)
num += 1
if num % 5 == 0:
break
print(model["耀"].shape)
print(len(model))
上面还是属于较为复杂的一种读数据,写详细格式编码的形式。
下面是一般的解决方法如下:
with open('E:\\A_MultiModal_Code\\EANN-KDD18\\Data\\weibo\\w2v.pickle', 'r',encoding='utf-8',errors='ignore') as file:
# model = pickle.load(file, encoding='iso-8859-1')
model = pickle.load(StrToBytes(file))