Python中关于序列化的讨论,以及dump、dumps和load、loads区别的对比

2023-11-03

序列化
序列化:pickle模块 json模块 shelve模块一.pickle模块1.pickle模块1)可以将对象转换为一种可以传输或存储的格式。2)pickle模块将任意一个python对象换成一个系统字节的操作过程叫做串行化对象。3)pickle模块实现了python的所有数据序列化和反序列化。它不是用于多种语言间的传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的。import pickle#序列化----将数据存储只文件中info = {“Name:”:“XiaoMing”,“Age:”:22}data_info = open(“a.pkl”,“wb”)pickle.dump(info,data_info)data_info.close()#反序化—将文件读取出来并反序列化data_out =open(‘a.pkl’,‘rb’)a=pickle.load(data_out)print(a)2.dump和dumps的区别:dump是将对象序列化并保存到文件中dumps是将对象序列化3.load和loads的区别:load将序列化字符串从文件读取并反序列化loads将序列化字符串反序列化执行代码:
data1 = [1,2,‘a’,3,‘b’]pi = pickle.dumps(data1)#dumps用来只是序列化对象print(pi)print(pickle.loads(pi))#loads也单单用来反序列化对象data2 = {‘Name’:‘Alex’,‘Age’:22,‘Sex’:‘Boy’}f = open(‘b.pkl’,‘wb’)pickle.dump(data2,f)#dump不单把对象序列化,且可以把序列化的对象写入文件f =open(‘b.pkl’,‘rb’)print(pickle.load(f))#load可以把对象从文件中读取出来,然后再反序列化执行的结果:b’\x80\x03]q\x00(K\x01K\x02X\x01\x00\x00\x00aq\x01K\x03X\x01\x00\x00\x00bq\x02e.’[1, 2, ‘a’, 3, ‘b’]下面使用with方法data3 = {‘k1’:123,‘k2’:456}with open(‘c.pkl’,‘wb’) as str_p: pickle.dump(data3,str_p)with open(‘c.pkl’,‘rb’) as str_r: a = pickle.load(str_r) print(a)#总结:dumps和dump,loads和load的区别# dumps 只是将对象序列化# dump 可以将对象序列化,并把序列化的对象保存到文件中# loads 也只是将序列化的字符串反序列化# load 可以将字符串从文件中读取出来,再反序列化二.json1.主要参数:1)obj:将obj对象格式化并存储到文件对象中,文件必须为可写的文件句柄,json只产生str对象,不支持bytes对象。2)skipkey:如果为True,对象的基本类型必须是str,int,float,bool,Non3)ensure_ascii = True:如果为true则所以传入的非ASCII字符都被转义,如果为False则字符将被原样输出。4)check_circular=True:如果为true容器类型的循环引用检查将被跳过5)indent=None:表述数组元素和对象将被按指定的值缩进,可以是整数或字符串’\t’6)sort_keys=False:如果为True字典的输出将按键排序2.json与pickle模块的区别:1)json只能处理基本数据类型。pickle能处理所有的Python的数据类型。2)json用于各种语言之间的字符转换。pickle用于python程序对象的持久化或者python程序对象的持久化或者python程序对象网络传输。三.shelve模块与pickle类似用来持久化数据的,不过shelve是以键值对的形式,将内存中的数据通过文件支持持久化,值支持任何pickle支持的python数据格式,它会在目录下生成三个文件。
执行代码:---------------------import shelves = shelve.open(‘test_s.db’)
s[‘k1’] = {‘int’:10,‘float’:8.8,‘string’:‘python’}

s.close()s = shelve.open(‘test_s.db’)
print(s[‘k1’])
print(s[‘k1’][‘float’])
s.close()执行结果{‘int’: 10, ‘float’: 8.8, ‘string’: ‘python’}8.8

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中关于序列化的讨论,以及dump、dumps和load、loads区别的对比 的相关文章

随机推荐

  • 服务器要如何提高性能

    服务器要如何提高性能 一 将服务器虚拟化 如果同期拥有多个项目 增加额外服务器会显得浪费 成本费用也会大幅度上升 这时不妨通过技术将其划分成多个虚拟空间 而每个空间又可以使用不同操作系统 运行不同应用程序 使得符合项目要求 这种方式通常能增
  • Java 多线程 线程8锁(含示例代码)

    以下内容根据视频https www bilibili com video BV1vE411D7KE p 6学习整理 线程8锁 目录 1 标准访问 2 线程休眠 3 新增普通方法 4 两个对象调用两个线程 5 一个对象调用两个静态同步方法 6
  • Unity中加入虚拟按钮不可见

    忙活了一个多小时 按钮老是看不到 调整了半天按钮坐标 最后发现首先将主角 first person control 的x y轴坐标调整到 0 0 Z轴坐标无所谓 再将按钮坐标调整到 0 0 就会在屏幕出现按钮了 此时再随意调整主角坐标 按钮
  • Android OTA 相关工具(八) 使用 lpadd 添加镜像到 super.img

    文章目录 1 lpadd 的编译 2 lpadd 的帮助信息 3 lpadd 的用法 3 1 准备工作 empty 的 super 设备镜像 raw 格式的 super 设备镜像 sparse 格式的 super 设备镜像 3 1 lpad
  • [Android5.1][RK3288] LCD Mipi 调试方法及问题汇总

    调试流程 设置 dts 中的参数 并 配置管脚 背光部分 LCD 初始化序列 cmds 打开 config 检查电压 调试顺序 1 背光有没有亮 2 开机 以及 从休眠状态唤醒 都没有显示内容 3 我碰到的 cmds 问题 问题集锦 我调试
  • (Redis) RDB与AOP持久化的实现与本质区别

    Redis服务器 Redis是一个键值对数据库服务器 服务器中通常包含着任意个非空数据库 而每个非空数据库中又可以包含任意个键值对 我们将服务器中的非空数据库以及它们的键值对统称为数据库状态 例如 下图就是一个包含三个数据库以及数据控中的键
  • 数组扁平化和去重

    数组扁平化和去重 引入题目 已知有数组 1 2 2 3 4 5 5 6 7 8 9 11 12 12 13 14 10 扁平化数组后应该得到的数组为 1 2 2 3 4 5 5 6 7 8 9 11 12 12 13 14 10 一 数组扁
  • Android Studio基础输入文本框EditText

    Android Studio基础输入文本框EditText 接续上一节 Android Studio 基础按钮使用 1 提示文本框 输入文本框 在布局xml编写
  • gitlab-ci docker maven 自动化流水线部署 springboot多模块项目

    一 准备 首先 需要两台服务器 这里为了下面方便理解 我们约定这两台服务器地址 名称和系统 1 gitlab 服务器 服务器A 地址10 10 10 7 内存大于4g不然会一直死 CentOS Linux 7 Core 2 springbo
  • 大白话讲懂word2vec原理和如何使用

    前言 做自然语言处理 Natural Language Processing NLP 这个领域的小伙伴们肯定对word2vec这个模型很熟悉了 它就是一种最为常见的文本表示的算法 是将文本数据转换成计算机能够运算的数字或者向量 在自然语言处
  • 八十二.将整数的奇偶位互换(位运算)

    将整数的奇偶位互换 import java util Scanner public class LianXi public static int exchange int i 和10101010 做与运算取出偶数位 int ou i 0xa
  • IDEF1X

    IDEF系列方法是由美国空军的ICAM Integrated Computer Aided Manufacturing 计划中首次提出一种复杂系统分析与设计方法 它包括了功能建模 IDEF0 信息建模 IDEF1 动态建模 IDEF2 数据
  • 如何测网络稳定性_如何测试无线WiFi系统的信号强度?这篇文章告诉你

    前言 在智能化弱电行业中 我们也会接触无线网络覆盖的项目 比如一个酒店 校园 园区 小区的无线网络覆盖 项目部署实施结束之后 我们怎样才能确定这个无线网络系统符合建设标准了 今天我们一起来聊聊 无线网络信号强度的测试方式 正文 无线网络可通
  • 如何构造大根堆

    如何构造一个大顶堆 C实现 基础知识 堆是一种二叉树结构 但是他的物理保存是一个数组 如下图 实际的保存形式为 5 4 1 25 68 8 1 5 2 3 设每个结点下标为i 则左孩子 2i 1 右孩子 2i 2 最后一个非叶子结点 arr
  • 汇编语言——第13章 int指令

    13 1 int指令 int指令的格式为 int n n为中断类型码 它的功能是引发中断过程 CPU执行int n指令 相当于引发一个n号中断的中断过程 执行过程如下 1 取中断类型码n 2 标志寄存器入栈 IF 0 TF 0 3 CS I
  • c#-中级篇知识合集-part01

    c 中级篇知识合集 part01 001 调试和错误处理 002 中断模式下的调试 003 错误处理 异常处理 004 异常处理 案例2 005 面向对象编程 类 006 类的定义和声明 Program cs Vector3 cs Vehi
  • 小鹏前自动驾驶AI负责人刘兰个川转投安克,研发具身智能

    作者 StrongerTang 编辑 自动驾驶Daily 点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 本文只做学术分享 如有侵权 联系删文 据新智驾消息 小鹏前自动驾驶AI负责人刘兰个川 Patrick 近期已加入
  • 基于FPGA的混沌信号发生器设计与实现

    提出基于FPGA设计混沌信号发生器的一种改进方法 首先 采用Euler算法 将连续混沌系统转换为离散混沌系统 其次 基于IEEE 754单精度浮点数标准和模块化设计理念 利用Quartus II软件 采用VHDL和原理图相结合的方式设计混沌
  • Druid无效链接回收策略(源码分析)(mysql 8小时连接失效问题)

    目录 问题背景 异常Communications link failure druid数据库连接池关键配置说明 注意标红配置 druid数据库连接池超时连接回收源码分析 第一种方式 获取连接时校验 第二种方式 Destroy 定时任务检查需
  • Python中关于序列化的讨论,以及dump、dumps和load、loads区别的对比

    序列化 序列化 pickle模块 json模块 shelve模块一 pickle模块1 pickle模块1 可以将对象转换为一种可以传输或存储的格式 2 pickle模块将任意一个python对象换成一个系统字节的操作过程叫做串行化对象 3