序列化和反序列化pickle

本文详细介绍了Python中的pickle库用于序列化和反序列化的方法,包括dump、dumps、load和loads函数的使用。讨论了类的序列化特性,强调了在反序列化时运行环境需有对应的类定义。最后提到了序列化的应用场景,特别是在网络传输中的作用,并指出在跨平台、跨语言场景下可能需要选择其他序列化协议如XML、JSON、Protocol Buffer等。
摘要由CSDN通过智能技术生成

序列化和反序列化

  1. 序列化:按照某种规则,把内存中数据保存到文件中。
    • 文件时一个字节序列,所以必须把数据转换成字节序列,输出到文件。
  2. 反序列化:从文件的字节序列恢复到内存并且还原原来的类型。

定义

  • serialization 序列化,将内存中对象存储下来,把他变成一个个字节。->二进制
  • deserialization 反序列化,将文件的一个个字节恢复成内存中对象。->二进制
    序列化保存到文件就是持久化,可以将数据序列化(持久化)后用于网络传输;也可以将从文件中或者网络接受到的字节序列反序列化。
  • Python中pickle库就是用来序列化和反序列化的。

pickle库

函数 说明
dumps 对象序列化为bytes对象
dump 对象序列化到文件对象,就是存入文件
loads 从bytes对象反序列化
load 对象反序列化,从文件读取数据
  • dump(obj,file,protocol=None,*,fix_imports=True) #将obj对象序列化后写入file中
    • obj:需要序列化的对象
    • file:文件描述符,需要写入的文件描述符
    • protocol:协议
    • fix_imports:
  • dumps(obj, protocol=None, *, fix_imports=True)->bytes #将obj对象序列化后返回序列化的bytes对象
    • obj:需要序列化的对象
    • protocol:协议
    • fix_imports:
    • bytes:返回值 序列化后的bytes
  • load(file, *, fix_imports=True, encoding=“ASCII”, errors=“strict”) #从文件中读取内容反序列化。
    • file :文件描述符,序列化后生成的文件。
    • fix_imports:
    • encoding:文件编码,默认为ASCII
    • errors
  • loads(bytes_object, *, fix_imports=True, encoding=“ASCII”, errors=“strict”)->从bytes中反序列化
    • bytes_object:序列化后的bytes对象
    • fix_imports:
    • encoding:编码
    • errors

简单综合示例

import pickle
i = 99
c = 'c'
l = list('123')
d = {
   "a":1,"b":"abc"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值