python序列化 -- pickle和json

提下序列化的知识点,目的有两个:

1. 存储或者传输抽象的代码对象(这个对象可以是一个类,一个字典等等,这些事物无法脱离py文件单独存在,所以我们统一制定一个统一编码标准将其转为二进制字节,到用的时候再解码)

2. 持久化存储,我们知道有些文件存储是以某种编码形式存在的;换句话说,换台机器用不同的编码格式,该文件的二进制字节格式完全不同。所以我们需要有一个统一的编码和解码方法将文件或者对象存储起来,以便于交流。

从上面两点我们可以推测出,既然序列化是着重于存储的,所以估计是做了内存优化的。比如一个对象在系统中占用了10m空间,将其序列化后,占用的空间应该不到10m,当然这是推测~

json序列化

与二进制序列化不同,json是文本序列化,其可以在不同编程语言之间做交互,且序列化后可以直接阅读。这里不多做介绍。

pickle.dump和pickle.load

pickle.dump用于序列化,即将对象转为统一格式的二进制码:

# -*- coding: utf-8 -*- 
import pickle

if __name__ == '__main__':
    dic = {'a':'b', 'c':'d', 'e':'f'}
    # 将dic对象序列化至f文件中
    with open('pickle_example.pickle', 'wb') as f:
        pickle.dump(dic, f)
        f.close()

pickle.load用于发序列化,将二进制码解码为对象:

# -*- coding: utf-8 -*- 
import pickle

if __name__ == '__main__':
    # 将f文件序列化
    with open('pickle_example.pickle', 'rb') as f:
        dic = pickle.load(f)
        print (type(dic))
        print (dic)

输出为:

 

参考资料:

[1] pickle二进制序列化和json文本序列化的比较

[2] (莫烦) pickle保存数据

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值