当前位置: 首页 > news >正文

python外篇(序列化和非序列化)

目录

概念阐述

pickle

json

msgpack 


概念阐述

    序列化是指将对象转化为可存储或可传输的数据格式,例如将 Python 对象转化为二进制、JSON 或 XML 等格式,以便于将其存储到文件中或在网络上传输。在Python中,可以使用pickle、json、msgpack(第三方模块)进行序列化。
    
    反序列化则是将序列化后的数据恢复成原来的对象。也就是将二进制、JSON 或 XML 等格式的数据转化为 Python 对象。同样在Python中,可以使用 pickle、json、msgpack等模块进行反序列化。

pickle

 (1) 介绍:
    pickle是一个内置模块,仅需导入即可使用
    pickle主要围绕字节流来序列化和反序列化
    因为其围绕字节流,所以相对相应的文件读写要使用'wb'和'rb'
    虽然其序列化的是字节流(二进制数据流),但是是python中独有的编码方式数据,并不通用与其他编程语言


    
(2) 以下是一些相关方法:
    dumps(obj):将python对象转换为bytes对象(序列化为字节流)返回
    loads(obj):将序列化的字节流数据反序列化为python对象返回
    dump(obj,file):将python对象转换为bytes对象,并写入文件中(序列化为字节流并写入文件)
    load(file,obj):读取文件中字节流数据并反序列化为python对象返回


    
(3) 建议将pickle序列化数据保存的文件名以.pkl或.pikcle来命名


(4) 以下是一些示例:

import pickletext = {'name':'joden'}with open('./t1.pickle','wb') as f:pickle.dump(text,f)with open('./t1.pickle','rb') as f:data = pickle.load(f)print(data)

json

(1) 介绍:
    json是一个内置模块,仅需导入即可使用
    json主要围绕json格式字符串来序列化和反序列化
    json相对相应的文件读写仅需使用'w'和'r'
    json是一种规定的用于交换传输的文本格式,可以在不同编程语言中使用


    
(2) 以下是一些相关方法:
    dumps(obj):将python数据序列化为json格式字符串返回
    loads(obj):将json格式字符串反序列化为python对象返回
    dump(obj,f):将python对象序列化为json格式字符串,并保存到文件中
    load(f):读取文件中的json数据并反反序列化为python对象返回

(3) 建议将json序列化数据保存的文件名以.json来命名

(4) 以下是一些示例:

import jsontext = {'name':'joden'}with open('./t1.json','w') as f:json.dump(text,f)with open('./t1.json','r') as f:data = json.load(f)print(data)

msgpack 

(1) 介绍:
    msgpack是一个第三方序列化库,使用前需要安装
    msgpack围绕通用的二进制数据流来进行序列化和反序列化
    msgpack序列化的数据有很好的跨平台性和语言兼容性
    msgpack序列化效率更高、更省内存


    
(2) 以下是一些相关方法:
    packb(obj)/dumps(obj):将python对象序列化为bytes对象返回
    unpackb(bytes)/loads(bytes):将bytes对象反序列化为python对象返回
    pack(obj,stream)/dump(obj,stream):将python对象序列化为bytes对象并写入steam流中
    unpack(stream)/load(stream):从stream流中读取bytes对象并反序列化为python对象返回


    
(3) 以下是stream参数的可选值(io.IOBase子类对象):
    io.FileIO:二进制文件对象
    ioTextIOBase:文本文件基类
    io.BytesIO:二进制内存文件对象
    ioStringIO:字符串内存文件对象
    ioBufferedIOBase:缓冲区文件基类
    ioBufferedRandom:缓冲区随机文件访问基类
    ioBufferedReader:缓冲区二进制读文件类(常用的读文件)
    ioBufferedWriter:缓冲区二进制写文件类(常用的写文件)
    callback:指定的回调函数中,回调函数将接受序列化数据进行处理


    
(3) 建议将序列化数据保存的文件名以.msgpack来命名


(4) 以下是一些示例:

import msgpackdata = {'name': 'joden'}
# 创建一个文件流(ioBufferedWriter),并序列化写入
with open('data.msgpack', 'wb') as f:msgpack.pack(data, f)
http://www.lryc.cn/news/55960.html

相关文章:

  • Linux总结(二)
  • 【4.1】Socket编程、TCP挥手
  • 【竞赛经历】CSDN第41期竞赛题解
  • 【Linux学习】信号——预备知识 | 信号产生 | 核心转储
  • 2023中国程序员薪酬报告出炉,你拖后腿了吗?
  • Mac下Python3安装及基于Idea开发
  • 2017年 团体程序设计天梯赛——题解集
  • “唯一靶点”的华堂宁会成控糖爆品吗?
  • Spring《三》DI依赖注入
  • leetcode 面试题 17.06. 2出现的次数
  • CMake入门教程【基础篇】5.configure_file构建配置
  • 软件开发可行性分析——健康食谱小程序
  • ShuffleNet V1 对花数据集训练
  • 测试人员转型是大势所趋:我的10年自动化测试经验分享
  • Pandas高级操作,建议收藏(一)
  • ASIC-WORLD Verilog(1)一日Verilog
  • 数据治理工具项目投标书技术部分-V1.6
  • ARMv8如何读取cache line中MOESI 状态以及Tag信息(tag RAM dirty RAM)
  • 学习通学习--脚本
  • C盘的深度清理
  • 43掌握自动化运维工具 Puppet 的基本用法,包括模块编写、资源管理
  • 【新2023Q2押题JAVA】华为OD机试 - 硬件产品销售方案
  • three.js实现3d球体树状结构布局——树状结构的实现
  • ChatGPT大解密:带您探讨机器学习背后的秘密、利用与发展
  • 3ds max2024带来了什么新功能(一)
  • HNU-电路与电子学-实验3
  • Hadoop MapReduce各阶段执行过程以及Python代码实现简单的WordCount程序
  • GitLab CI/CD 新书发布,助企业降本增效
  • 【分享】如何写出整洁的代码?
  • 视频剪辑:教你如何调整视频画面的大小。