当前位置: 首页 > 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)

相关文章:

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

目录 概念阐述 pickle json msgpack 概念阐述 序列化是指将对象转化为可存储或可传输的数据格式,例如将 Python 对象转化为二进制、JSON 或 XML 等格式,以便于将其存储到文件中或在网络上传输。在Python中,可以使用pickle、json、msgpac…...

Linux总结(二)

基础IO 1.什么叫文件? 我们需要在操作系统的角度理解文件。 文件 = 文件内容 + 属性(所以即使是空文件,也会占空间,因为我们是需要保存文件属性的,属性也是数据,所以占空间) C/C++程序默认会打开三个文件流,叫做标准输入(stdin),标准输出(stdout),标准错误(std…...

【4.1】Socket编程、TCP挥手

TCP连接断开 四次挥手 四次挥手过程 客户端发送FIN报文,客户端进入FIN_WAIT_1状态。 服务端接收报文,发送ACK报文,服务端进入CLOSE_WAIT状态。 客户端收到ACK报文,进入FIN_WAIT_2状态。 服务端处理完数据后,也发送…...

【竞赛经历】CSDN第41期竞赛题解

1 前言 本次的竞赛主要是最后一题,对于完全不懂珠算的人来说还是有点困难的,仅理解题目的意思就花了很多时间,最后侥幸拿了第一个前三。。。 2 题解 本次竞赛分为编程题部分和非编程题部分,其中非编程题部分比较简单。 2.1 非编…...

【Linux学习】信号——预备知识 | 信号产生 | 核心转储

🐱作者:一只大喵咪1201 🐱专栏:《Linux学习》 🔥格言:你只管努力,剩下的交给时间! 信号🔔信号🎵预备知识🎵信号处理方法的注册🔔信号…...

2023中国程序员薪酬报告出炉,你拖后腿了吗?

程序员薪资高已是公认的事实,但是具体高到什么程度呢?近期,全球人力服务公司 Michael Page Internatioal 就发布了《2023 中国大陆薪酬报告》,揭示了中国程序员的薪酬情况。 该报告中一共调研了国内 7 个行业以及 6 大城市不同职…...

Mac下Python3安装及基于Idea开发

本篇文章带大家基于Mac OS操作系统,下载、安装Python环境,并基于Idea编写第一个Demo。 Python3安装 访问Python官网:https://www.python.org/。找到“Download”菜单,点击下载: 此处下载的为Mac的安装包&#xff0c…...

2017年 团体程序设计天梯赛——题解集

前言: Hello各位童学大家好!😊😊,茫茫题海你我相遇即是缘分呐,或许日复一日的刷题已经让你感到疲惫甚至厌倦了,但是我们真的真的已经达到了我们自身极限了吗?少一点自我感动&#xf…...

“唯一靶点”的华堂宁会成控糖爆品吗?

一上市,两次“断货”的货华堂宁有爆品那味儿了。 2022年10月28日华领医药-B(02552.HK)公告华堂宁(多格列艾汀)正式进入商业化,一周后各个渠道便进入到了断货和限售的状态。 对于一个不在传统九大降糖药品…...

Spring《三》DI依赖注入

🍎道阻且长,行则将至。🍓 上一篇:Spring《二》bean的实例化与生命周期 下一篇:敬请期待 目录一、setter注入🍉1.注入引用数据类型2.注入简单数据类型二、构造器注入🍊1.注入引用数据类型2.简单数…...

leetcode 面试题 17.06. 2出现的次数

编写一个方法,计算从 0 到 n (含 n) 中数字 2 出现的次数。 示例: 输入: 25 输出: 9 解释: (2, 12, 20, 21, 22, 23, 24, 25)(注意 22 应该算作两次) 该问题用的方法数数组dp,首先我通过总结规律写出了相关的code。使用一个dp数组记录10i10^i10i以内会出…...

CMake入门教程【基础篇】5.configure_file构建配置

configure_file配置文件 文章目录 知识点实例代码目录代码实现知识点 configure_fileconfigure_file 源文件转换为目标文件 实例 代码目录 |-📁prj4   |-- 🎴CMakeLists.txt   |-- 🎴TutorialConfig.h.in   |-- 🎴tutorial.cxx 代码实现 /prj4/CMakeLists.…...

软件开发可行性分析——健康食谱小程序

关于软件开发可行性分析先给大家介绍下面几个关键点: 什么是可行性分析? 检查并确定是否值得为项目或产品投入时间、金钱和资源。这样的评估活动称为“可行性分析”。 为什么要进行可行性分析? 在软件项目开发过程中,只要资源…...

ShuffleNet V1 对花数据集训练

目录 1. shufflenet 介绍 分组卷积 通道重排 2. ShuffleNet V1 网络 2.1 shufflenet 的结构 2.2 代码解释 2.3 shufflenet 代码 3. train 训练 4. Net performance on flower datasets 1. shufflenet 介绍 shufflenet的亮点:分组卷积 通道重排 mobilenet …...

测试人员转型是大势所趋:我的10年自动化测试经验分享

做测试十多年,有不少人问过我下面问题: 现在的手工测试真的不行了吗? 测试工程师,三年多快四年的经验,入门自动化测试需要多久? 自学自动化测试到底需要学哪些东西? 不得不说,随着行…...

Pandas高级操作,建议收藏(一)

在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序的使用。 复杂查询 实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何…...

ASIC-WORLD Verilog(1)一日Verilog

写在前面 在自己准备写一些简单的verilog教程之前,参考了许多资料----asic-world网站的这套verilog教程即是其一。这套教程写得极好,奈何没有中文,在下只好斗胆翻译过来(加了自己的理解)分享给大家。 这是网站原文&…...

数据治理工具项目投标书技术部分-V1.6

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 项目背景 二、项目目标 提供一套后勤数据治理工具部署文件及配套文档,主要技术指标如下: (1)具备数据抽取转换装载、元数据管理、…...

ARMv8如何读取cache line中MOESI 状态以及Tag信息(tag RAM dirty RAM)

本文以Cortex-A53处理器为例,通过访问 处理器中的内部存储单元(tag RAM和dirty RAM),来读取cache line 中的MOESI信息。 Cortex-A53提供了一种通过读取一些系统寄存器,来访问Cache 和 TLB使用的一些内部存储单元的机制…...

学习通学习--脚本

刷客就爱学学习-首页 (xxbwk.top) 所有科目答案可以网上找超星尔雅学习通《形势与政策》2023年春章节测试答案 (3gmfw.cn) 学习通全部答案 萌面人 – 萌面人官网 (mengmianren.com) 自动答题教程 想要使用自动答题功能,只需要一个配置项就可以让OCS脚本拥有自动答…...

XML Group端口详解

在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

MMaDA: Multimodal Large Diffusion Language Models

CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

MySQL 主从同步异常处理

阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示&#xff…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...