版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lthirdonel/article/details/88638814
pickle
pickle是一个将内存中的数据(运行中的非持久存储的)存储的硬盘上(持久的文件)
pickle可以将对象以文件的形式存放在磁盘上
pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化
pickle 语法
pickle.dump(obj, file[, protocol])
序列化对象,并将结果数据流写入到文件对象中。
参数protocol是序列化模式,
默认值为0,表示以文本的形式序列化。
protocol的值还可以是1或2,表示以二进制的形式序列化。
pickle.load(file)
反序列化对象。将文件中的数据解析为一个Python对象。
其中要注意的是,在load(file)的时候,要让python能够找到类的定义,否则会报错
open函数
上面的file是open函数返回的文件对象
http://www.runoob.com/python/python-func-open.html
实例
下面代码是将user_item_reviews变成user_item_reviews_emb
import pandas as pd
import numpy as np
import os
import pickle
import pdb
word_id_dict = pickle.load(open('word_id_dict', 'r'))
user_item_reviews = pickle.load(open('user_item_review', 'r'))
word_embs = pickle.load(open('word_emb.pkl', 'r'))
item_reviews = pickle.load(open('item_reviews', 'r'))
word_emb=[]
user_item_review_emb=[]
user_item_reviews_emb={}
for item in item_reviews:
#print (item)
for user_item in item_reviews[item]:
#print(user_item[0])
user_item_review_emb = []
for user_item_review in user_item[2]:
#if item=='162' and user_item[0]=='538':
word_emb=0
for word_id in user_item_review:
word_emb += word_embs[word_id]
word_emb /= len(user_item_review)
#print(np.array(word_emb))
user_item_review_emb.append(np.array(word_emb))
user_item_reviews_emb[user_item[0]+'@'+item]=user_item_review_emb
pickle.dump(user_item_reviews_emb, open('liuyang', "wb"))
pdb.set_trace()