python--序列化模块json与pickle

news2024/10/5 17:20:17

什么叫序列化?

        将原本的字典、列表等内容转换成一个字符串的过程就 叫做序列化。

多用的两个序列化模块:json与pickle

·json,用于字符串 和 python数据类型间进行转换

·pickle,用于python特有的类型 和 python的数据类型间进行转换

序列化的目的  

1、以某种存储形式使自定义对象持久化;

2、将对象从一个地方传递到另一个地方;

3、使程序更具维护性。  

  json

一些对于文档的操作请参考:文档的操作

Json模块提供了四个功能:        

dumps:序列化,将某个数据类型转化为字符串

import json
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串
print(type(str_dic),str_dic) #<class 'str'> {"k3": "v3","k1": "v1", "k2": "v2"}
#注意,json转换完的字符串类型的字典中的字符串是由""表示的

 注意:转化后的字符串由""表示,且会将字符串规范化,结果如下

 loads:反序列化:将一个字符串格式的字典转换成一个字典

import json
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串
dic2 = json.loads(str_dic) #反序列化:将一个字符串格式的字典转换成一个字典
print(type(dic2),dic2) #<class 'dict'> {'k1': 'v1', 'k2':'v2', 'k3': 'v3'}

 注意:转为字典后也可进行一系列操作,结果如下:

 处理嵌套的数据类型

import json
list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}]
str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型
print(type(str_dic),str_dic) #<class 'str'> [1, ["a", "b","c"], 3, {"k1": "v1", "k2": "v2"}]
list_dic2 = json.loads(str_dic)
print(type(list_dic2),list_dic2) #<class 'list'> [1, ['a','b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]

结果为:

 pickle模块

提供了四个功能:dumps、dump(序列化,存)、loads(反 序列化,读)、load (不仅可以序列化字典,列表...可以把python中任 意的数据类型序列化)

在大多数情况与json相同,但是pickle更符合其操作python

import pickle
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = pickle.dumps(dic)
print(str_dic) #一串二进制内容
dic2 = pickle.loads(str_dic)
print(dic2) #字典
import time
struct_time = time.localtime(1000000000)
print(struct_time)
f = open('pickle_file','wb')
pickle.dump(struct_time,f)
f.close()
f = open('pickle_file','rb')
struct_time2 = pickle.load(f)
print(struct_time2.tm_year)

结果为:

        这时候机智的你又要说了,既然pickle如此强大,为什么还要学json呢? 这里我们要说明一下,json是一种所有的语言都可以识别的数据结构。 如果我们将一个字典或者序列化成了一个json存在文件里,那么java代码 或者js代码也可以拿来用。 但是如果我们用pickle进行序列化,其他语言就不能读懂这是什么了~ 所以,如果你序列化的内容是列表或者字典,我们非常推荐你使用json模 块 但如果出于某种原因你不得不序列化其他的数据类型,而未来你还会用 python对这个数据进行反序列化的话,那么就可以使用pickle  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1865251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

教师资格证考试面试报名流程

文章目录 前言面试报名流程一、登录官网二、选择报考省份三、注册报名账号四、确认考试承诺五、填报个人信息六、上传个人照片七、查看个人信息八、面试报名九、等待审核十、考试缴费最后&#xff08;必看&#xff09;附录1. 中小学教师资格考试网2. 广东省教资考试报名通知&am…

Linux:系统引导过程与服务控制

目录 一、linux 系统引导过程 1.1、引导过程总览 1.2、系统初始化进程 &#xff08;centos 6和7 的区别&#xff09; 1.2.1、centos 6 的引导过程 init 进程 1.2.2、centos 7(systemd进程) 二、MBR、GRUB菜单、忘记密码故障修复 2.1、修复MBR扇区故障 模拟故障 重启…

webstorm无法识别tsconfig.json引用项目配置文件中的路径别名

问题 vite项目模板中&#xff0c;应用的ts配置内容写在tsconfig.app.json文件中&#xff0c;并在tsconfig.json通过项目引用的方式导入 {"files": [],"references": [{"path": "./tsconfig.app.json"},{"path": "./t…

小白学python(第二天)

哈喽&#xff0c;各位小伙伴们我们又见面了&#xff0c;昨天的文章吸收得如何&#xff1f;可有不懂否&#xff1f;如有不懂可以在品论区留言哦&#xff0c;废话不多说&#xff0c;开始今天的内容。 字符及字符串的续讲 字符&#xff1a;英文字母&#xff0c;阿拉伯数字&#x…

【QT】设置QTabWidget样式:上、下边线的显示与去除

目录 0.简介 1.环境 2.详细介绍 2.1我的原代码和显示效果 2.2 去掉QTabWidget的边框 2.3 单独留下边线 2.3.1 法一&#xff1a;通过【this->setDocumentMode(true);】设置下边线 2.3.2 通过【QTabWidget::pane】设置下边线 2.4单独设置上边线 2.5 优化界面tab 2.…

ESRW-102打滑开关 JOSEF约瑟 调试简单,安装灵活

ESRW-102打滑开关是一种用于监测设备转速或带速的传感器&#xff0c;尤其适用于皮带输送机等转动设备&#xff0c;用于检测和处理打滑、断裂等机械故障。以下是关于ESRW-102打滑开关的详细介绍&#xff1a; 用途 主要用于皮带输送机、提升机、螺旋输送机等转动设备&#xff0…

Charles 忽略IP授权 Allow 弹窗

当有新的设备连接到 Charles 时&#xff0c;会出现如下弹框确认是否允许&#xff0c;如果希望允许所有客户端连接不再有提示&#xff0c;可以通过添加模糊IP规则来实现。 配置方法&#xff1a;Proxy > Access Control Settings 中添加 0.0.0.0/0 和 ::/0 即可&#xff0c;…

DLS策略洞察:如何应对AI数据中心网络交换机市场的爆发式增长?

摘要&#xff1a; 随着AI技术的发展和应用&#xff0c;AI数据中心对网络交换机的需求日益增加。摩根士丹利预计&#xff0c;2023-2026年间&#xff0c;AI数据中心网络交换机的收入复合年增长率&#xff08;CAGR&#xff09;将达到55%。本文将详细分析AI数据中心网络交换机市场…

高德地图开发隐藏logo和标志文字

vue开发隐藏引用高德地图的logo和文字方法 //scss <style langscss scoped>:deep(.amap-logo), :deep(.amap-copyright) {display: none !important; }</style>

环路滤波器

块效应产生的原因 块效应指视频边界不连续的变化,我们在观看视频的时候,在运动剧烈的场景常能观察到图像出现小方块,小方块在边界处呈现不连续的效果(如下图),这种现象被称为块效应(blocking artifact)。 造成这种现象的主要原因有两点: DCT量化误差导致运动补偿导致…

C# Winform中制作精美控件(2)

仓库温度监控系统重有个控件&#xff0c;就是温度监控&#xff0c;还是比较精美的&#xff0c;那么我们来看看制作的要点有哪些。 前面我们讨论过布局和圆角按钮。这节主要关注温度计控件 1. 布局&#xff1a; 两个Panel将界面分位上下两个部分&#xff0c;Dock.Top Dock.Fil…

Web3 ETF 的软件开发框架

Web3 ETF 的软件开发框架主要包含以下几个方面&#xff0c;需要说明的是&#xff0c;Web3 ETF 仍处于早期发展阶段&#xff0c;相关技术和标准尚未成熟。在开发 Web3 ETF 时&#xff0c;需要谨慎评估风险&#xff0c;并做好安全防范措施。北京木奇移动技术有限公司&#xff0c;…

【博士每天一篇文献-算法】Fearnet Brain-inspired model for incremental learning

阅读时间&#xff1a;2023-12-16 1 介绍 年份&#xff1a;2017 作者&#xff1a;Ronald Kemker&#xff0c;美国太空部队&#xff1b;Christopher Kanan&#xff0c;罗切斯特大学 期刊&#xff1a; arXiv preprint 引用量&#xff1a;520 Kemker R, Kanan C. Fearnet: Brain-…

手机恢复已删除的照片,2个实用方法,有效避免数据丢失

手机相册&#xff0c;简直就是我们生活中的宝藏库&#xff0c;里面储存着我们拍摄的每一张照片。但是&#xff0c;有时候我们会因为手残或者意外情况&#xff0c;不小心把手机照片给删了&#xff0c;这简直是让我们的生活留下了无法弥补的遗憾啊&#xff01; 为了帮助大家避免…

如何封装自动化测试框架?

封装自动化测试框架&#xff0c;测试人员不用关注框架的底层实现&#xff0c;根据指定的规则进行测试用例的创建、执行即可&#xff0c;这样就降低了自动化测试门槛&#xff0c;能解放出更多的人力去做更深入的测试工作。 本篇文章就来介绍下&#xff0c;如何封装自动化测试框…

“天下第一痛”到底有多疼?三叉神经痛有哪些症状

三叉神经是负责脸部、口腔、鼻腔和舌前的感觉和咀嚼肌的运动的颅脑最粗大的神经。当三叉神经被干扰后&#xff0c;它所支配的面部区域内就会出现一种反复发作的短暂性剧烈疼痛&#xff0c;每次痛持续数秒至数十秒&#xff0c;可严重影响患者生活质量。 三叉神经痛的主要特征是在…

云渲染平台千千万,哪个平台更划算!?

渲染100 以高性价比著称&#xff0c;是预算有限的小伙伴首选。 15分钟0.2,60分钟内0.8;注册填邀请码【7788】可领30元礼包和免费渲染券) 提供了多种机器配置选择(可以自行匹配环境)最高256G大内存机器&#xff0c;满足不同用户需求。支持3dmax&#xff0c;cr&#xff0c;vr所…

他们说:优秀的程序员应该对代码保持追求

在当今技术飞速发展的时代&#xff0c;快速开发成为了企业竞争的关键。为了满足市场需求&#xff0c;降低开发成本&#xff0c;越来越多的企业开始关注低代码开发平台。 传统的应用开发流程通常需要大量的人力资源和时间投入&#xff0c;使得企业在产品迭代的速度上受限。而低…

筑梦未来:高考后,专业与学校的天秤两端

前言 2024 年高考落幕&#xff0c;几人欢喜几人愁&#xff0c;作为一个过来人&#xff0c;希望每一个努力的悻悻学子都能得偿所愿&#xff0c;不负年华&#xff0c;报的心仪的志愿。 接下来我将从三个方向进行一些分析建议&#xff0c;在专业与大学排名间做出适当的权衡。 专…

AI办公自动化:多音频轨电影视频抽取出英语音频

很多电影视频是有中、英、粤语等多个音频轨的&#xff0c;如果直接转换成音频&#xff0c;很有可能不是自己想要的那种语音。 可以先查看音频流信息&#xff0c;确定属于哪个音频轨&#xff1a; Reading video file: E:\1-7\比得兔1.mp4 输出音频流信息 Available audio str…