Pickle模块将程序运行的数据信息序列化的存储到文件中(二进制),方便重新读取调用
首先创建文件:file=open("word.pkl","rb+")
存入:pickle.dump(data,file)
读取:pickle.load(file)
例如:
import pickle as p
word_to_ix1={'chen':[0],'hongming':[1],'ming':[2]}#也可以是其他类型数据
word_to_ix2={'chen':[0],'xinghong':[1],'hushuiying':[2]}
file=open('word.pkl','wb+')
p.dump(word_to_ix1,file)
p.dump(word_to_ix2,file)
file.seek(0)#文件读写标记移到文件开始
d=p.load(file)
c=p.load(file)
print(d)
print(c)
输出:
{'ming': [2], 'chen': [0], 'hongming': [1]}
{'hushuiying': [2], 'chen': [0], 'xinghong': [1]}
注意
pickle.dump和pickle.dumps是有区别的。前者是讲数据写如一个pkl文件,后者是将数据写入一个对象(注意一个是load一个是loads)。具体例子如下:
import pickle
from collections import deque
s=np.asarray([1,2,3,4,5])
a=np.asarray([1,2,3,4,5])
r=np.asarray([1,2,3,4,5])
s1=np.asarray([1,2,3,4,5])
t=np.asarray([1,2,3,4,5])
file=open("data.pkl",'wb+')
list=[(s,a,r,s1,t),(s,a,r,s1,t),(s,a,r,s1,t),(s,a,r,s1,t),(s,a,r,s1,t)]
data=deque(maxlen=100)
data.extend(list)
s=pickle.dumps(data)
out1=pickle.loads(s)
pickle.dump(data,file)
list1=[(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0)]
data1=deque(maxlen=100)
data1.extend(list1)
pickle.dump(data1,file)
file.close()
file=open("data.pkl",'rb')
out2=pickle.load(file)
out3=pickle.load(file)
print(out1)
print(out2)
print(out3)
输出:
deque([(array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]))], maxlen=100)
deque([(array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]))], maxlen=100)
deque([(0, 0, 0, 0, 0), (0, 0, 0, 0, 0), (0, 0, 0, 0, 0), (0, 0, 0, 0, 0), (0, 0, 0, 0, 0)], maxlen=100)