python3基础--pickle模块

pockle模块和json模块很对地方用法都一样
1、只能在python中使用,只支持python的基本数据类型。
2、可以处理复杂的序列化语法。(例如自定义的类的方法,游戏的存档等)
3、序列化的时候,只是序列化了整个序列对象,而不是内存地址。
4、编码dump 和dumps 解码 loads 和load 区别,带s的在读取文件类容,多了一步,需要先读在取,不带S的就直接可以取 见代码示例
代码示例和json的对比

a=[{1:3,"a":12},[1,2,3],(1,2,3),[(1,2,4)],1.2,10,True,False]
f=pickle.dumps(a)
j=json.dumps(a)
print(f)
print(j)
print("-------------------")
print("pickle解码",pickle.loads(f))
print("json解码",json.loads(j))

在这里插入图片描述

文件写入和读取 dump 和dumps loads 和load 区别

def sayhi(name):
    print("hello",name)

info = {
    '':'',
    'age':32,
    'func':sayhi   #这里注意和函数名一样 ,pick.dump后就以对象的形式储存到了文件 
}

pickle.dump(info,open('rras',"ab"))  
a=pickle.load(open("rras","rb"))  #解码出来 可以看到结果,是对象
print(a)
print(a['func'](1)) #调用函数 

#带S 的和不带S的区别,多了写和 读的步骤,建议使用这种据说是安全
f=open("path","ab") 
data=pickle.dumps(info) #写的时候先把内容编码
f.write(data)#然后在写
f=open("path","rb")
obj=f.read() #读是先把文件的内容读出来 
print(pickle.loads(obj))#然后在解码

在这里插入图片描述
类对象也可以储存

class save_obj:
    def __init__(self,name,age):
        self.name =name
        self.age=age
        
    def save(self):
        with open("path", "wb") as f:
            pickle.dump(self,f) #把类对象储存到文件
            
    def getll(self):
        data=pickle.load(open("path","rb")) #从文件解码出类对象 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值