python之pickle序列化与json序列化模块 | dumps、loads、dump、load

一、序列化模块**序列化:**指把python中的数据以文本或二进制的方式进行转换,并且还能反序列化为原来的数据(转成二进制)**为什么需要对数据进行序列化:**数据在程序与网络中进行传输和存储时,需要以更加方便的形式进行操作主要方法:①二进制序列化模块 pickle (python专用)②文本序列化模块 json (互联网通用)与 json 模块的比较:Pickle 协议和 JSON (JavaScript Object Notation) 间有着本质的不同:JS
摘要由CSDN通过智能技术生成

一、序列化模块

序列化:指把python中的数据文本或二进制的方式进行转换,并且还能反序列化为原来的数据(转成二进制)

为什么需要对数据进行序列化: 数据在程序与网络中进行传输和存储时,需要以更加方便的形式进行操作

主要方法:

  • ①二进制序列化模块 pickle (python专用)
  • ②文本序列化模块 json (互联网通用)
json 模块的比较:

Pickle 协议和 JSON (JavaScript Object Notation) 间有着本质的不同:

  • JSON 是一个文本序列化格式(它输出 unicode 文本,尽管在大多数时候它会接着以 utf-8 编码),而 pickle 是一个二进制序列化格式;
  • JSON 是我们可以直观阅读的,而 pickle 不是;
  • JSON是可互操作的,在Python系统之外广泛使用,而pickle则是Python专用的;
  • 默认情况下,JSON 只能表示 Python 内置类型的子集,不能表示自定义的类;但 pickle 可以表示大量的 Python 数据类型(可以合理使用 Python 的对象内省功能自动地表示大多数类型,复杂情况可以通过实现 specific object APIs 来解决)。

参见:json 模块:一个允许JSON序列化和反序列化的标准库模块

1. pickle 序列化

  • dumps() 序列化,可以把一个python的任意对象序列化成为一个二进制

    • 返回一个序列化后的二进制数据
    • pickle.dumps(var)
  • loads() 反序列化,可以把一个序列化后的二进制数据反序列化为python的对象

    • 返回一个反序列化后的python对象
  • pickle.dumps(var)

  • dump() 序列化,把一个数据对象进行序列化并写入到文件中

    • pickle.dump(var,fp)
    • 参数1:需要序列化的数据对象
    • 参数2:写入的文件对象
  • load() 反序列化,在一个文件中读取序列化的数据,并且完成一个反序列化

    • 参数1:读取的文件对象
    • pickle.load(fp)

举例:

(1)基本的序列化与反序列化操作

vars = 'i love you' 
vars = [1,2,3,4]    
vars = {
   'name':'张三','age':20,'sex':'m'} 

# ①使用 pickle.dumps方法 进行序列化成为一个二进制的数据
res = pickle.dumps(vars) 

'''
分别返回:
b'\x80\x03X\n\x00\x00\x00i love youq\x00.' <class 'bytes'>

b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.' <class 'bytes'>

b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x06\x00\x00\x00\xe5\xbc\xa0\xe4\xb8\x89q\x02X\x03\x00\x00\x00ageq\x03K\x14X\x03\x00\x00\x00sexq\x04X\x01\x00\x00\x00mq\x05u.' <class 'b
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值