Python基础:pickle (序列化与反序列化)

本文介绍了Python中的pickle模块,它可将内存中的数据持久存储到硬盘文件,能对几乎所有Python数据类型进行序列化。还说明了其语法,包括序列化和反序列化操作,以及使用时的注意事项,如反序列化时要让Python找到类的定义,最后给出了实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值