首页 > 其他 > 详细

27-1 序列化模块 pickle

时间:2020-04-08 00:03:11      阅读:81      评论:0      收藏:0      [点我收藏+]

python专用

没什么限制

能处理很多数据类型!

dump 需要的文件f句柄 需要wb形式打开,load需要rb模式

支持对象序列化!需要这个对象对应的类在内存中

转成bytes类型!也是序列类型

 

 

dic = {1:(12,3,4),(a,b):4}
import pickle

pic_dic = pickle.dumps(dic)
print(pic_dic)    # bytes类型  b‘\x80\x04\x95\x1b\x00\x00\x00\x.... 
new_dic = pickle.loads(pic_dic)
print(new_dic)    # {1: (12, 3, 4), (‘a‘, ‘b‘): 4}

 

支持几乎所有对象的
class Student:
    def __init__(self,name,age):
        self.name = name
        self.age = age

alex = Student(alex,83)
ret = pickle.dumps(alex)
小花 = pickle.loads(ret)
print(小花.name)  
print(小花.age)

 

技术分享图片
class Student:
    def __init__(self,name,age):
        self.name = name
        self.age = age

alex = Student(alex,83)
with open(pickle_demo,wb) as f:
    pickle.dump(alex,f)
with open(pickle_demo,rb) as f:
    旺财 = pickle.load(f)
    print(旺财.name)
View Code

 

这种方式可以重复写入,然后重复拿出来(这里有一个异常,在最后一次没有值,会报错,这里用了异常处理)
with open(pickle_demo,wb) as f:
    pickle.dump({k1:v1}, f)
    pickle.dump({k11:v1}, f)
    pickle.dump({k11:v1}, f)
    pickle.dump({k12:[1,2,3]}, f)
    pickle.dump([k1,v1,l1], f)

with open(pickle_demo,rb) as f:
    while True:
        try:
            print(pickle.load(f))
        except EOFError:
            break

 



27-1 序列化模块 pickle

原文:https://www.cnblogs.com/zhuangdd/p/12657017.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!