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

Python对象序列化

对象就是抽象化的概念,比如列表、字典、元组都是对象,而对象序列化就是将对象持久化操作,把这种抽象化的概念持久化在磁盘上,将对象转换为字节数据和字符数据

Python提供了pickle模块和json模块序列化对象

pickle模块

pickle模块可以将列表、字典、集合、类等序列化,将其转换为字节数据

dumps():将对象序列化为字节数据

import pickle
a = [1,2,3,4]
date = pickle.dumps(a)
print(date)
f = open("a.dat","wb")
f.write(date)
f.close()

b'\x80\x04\x95\r\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04e.'

loads():将字节数据反序列化为对象

import pickle
f = open("a.dat","rb")
show = f.read()
show = pickle.loads(show)
print(show)

[1, 2, 3, 4]

dump():将对象序列化为字节数据并且保存在文件中

import pickle
a = [1,2,3]
x = pickle.dump(a,open("a.dat","wb"))
f = open("a.dat","rb")
print(f.read())

b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03e.'

load():自动读取文件并且将字节数据反序列化为对象

import pickle
x = pickle.load(open("a.dat","rb"))
print(x)

[1, 2, 3]

json模块

json模块可以将列表、字典、集合、类等序列化,将其转换为字符数据

注意:json一般是用来操作字典对象

dumps():将对象序列化为字符数据

import json
a = {"name":"张三","age":18}
x = json.dumps(a)
f = open("a.txt","w")
f.write(x)
print(x)

{"name": "\u5f20\u4e09", "age": 18}

loads():将字符数据反序列化为对象

import json
f = open("a.txt","r")
x = f.read()
x = json.loads(x)
print(x)

{'name': '张三', 'age': 18}

dump():将对象序列化为字符数据并且保存在文件中

import json
a = {"name":"李四","age":18}
x = json.dump(a,open("a.txt","w"))
f = open("a.txt","r")
print(f.read())

{"name": "\u674e\u56db", "age": 18}

load():自动读取文件并且将字符数据反序列化为对象

import json
x = json.load(open("a.txt","r"))
print(x)

{'name': '李四', 'age': 18}

总结:dump和load都会比dumps和loads便捷使用

相关文章:

  • Linux-Linux内核-进程调度
  • LabVIEW重入:允许同时调用同一子VI
  • 『网易实习』周记(五)
  • 【glib】vs2022 v163 debug win32: meson构建 glib-2.67.6
  • JlinkV9的Vtref详解
  • Thinkphp5.1对接ueditor(自定义上传接口)
  • “双非”渣本投岗爱奇艺(Java),三轮技术面等消息,侥幸通过!
  • FlinkSQL系列04-CDC连接器
  • 包-node.js中的第三方模块
  • vscode 个人实用插件(资源集合)
  • GTOT-Toolkit模板参考
  • [贪心]Min-Max Array Transformation Codeforces1721C
  • 猿创征文|【算法入门必刷】数据结构-栈(二)
  • 数据结构-压缩软件核心(利用哈夫曼树进行编码,对文件进行压缩与解压缩)
  • 月薪12.8K,零基础转行软件测试5月斩获3份过万offer,分享一些我的秘招~
  • 深入了解以太坊
  • 10个最佳ES6特性 ES7与ES8的特性
  • Akka系列(七):Actor持久化之Akka persistence
  • classpath对获取配置文件的影响
  • CSS盒模型深入
  • ECMAScript入门(七)--Module语法
  • JavaScript新鲜事·第5期
  • java正则表式的使用
  • leetcode386. Lexicographical Numbers
  • orm2 中文文档 3.1 模型属性
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 和 || 运算
  • 将 Measurements 和 Units 应用到物理学
  • 如何使用 JavaScript 解析 URL
  • 说说动画卡顿的解决方案
  • 算法---两个栈实现一个队列
  • 网页视频流m3u8/ts视频下载
  • 想写好前端,先练好内功
  • 原生 js 实现移动端 Touch 滑动反弹
  • ​插件化DPI在商用WIFI中的价值
  • ​力扣解法汇总946-验证栈序列
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $(selector).each()和$.each()的区别
  • $.ajax()方法详解
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (二)fiber的基本认识
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (四)汇编语言——简单程序
  • (一)WLAN定义和基本架构转
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • ./configure,make,make install的作用(转)
  • .NET 表达式计算:Expression Evaluator