序列化

序列化: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 可以将字符串从文件中读取出来,再反序列化

二.json

1.主要参数:

1)obj:将obj对象格式化并存储到文件对象中,文件必须为可写的文件句柄,json只产生str对象,

不支持bytes对象。

2)skipkey:如果为True,对象的基本类型必须是str,int,float,bool,Non

3)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 shelve

s = 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

python中s和t_Python中关于序列化的讨论,以及dump、dumps和load、loads区别的对比相关推荐

  1. Python基础教程:json中load和loads区别

    相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化 序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容 ...

  2. python编写ATM类_Python中编写类的各种技巧和方法

    有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling).你可以把它当作一个教程, ...

  3. python中dumps是什么意思_python中的dumps和loads区别

    一.概念理解 json是一种轻量级的数据交换格式,对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由逗号分割的键值对组成,如: {"name":"cc ...

  4. Python中Pickle模块的dump()方法和load()方法

    Python中的Pickle模块实现了基本的数据序列与反序列化. 一.dump()方法 pickle.dump(obj, file, [,protocol]) 注释:序列化对象,将对象obj保存到文件 ...

  5. python里load什么意思_【python】json中load和loads区别

    相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化 序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容 ...

  6. Python批量设置pptx文件中文本框边框与填充样式(含20分钟视频讲解)

    近期会议: 10月30-11月1日 全国高校Python课程高级研修班(苏州) 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清 ...

  7. java图片序列化_Java中的强大武器——对象的序列化

    原标题:Java中的强大武器--对象的序列化 所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象.这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象, ...

  8. 使用Python和OpenCV检测图像中的条形码

    使用Python和OpenCV检测图像中的条形码 1. 效果图 2. 算法的步骤 3. 源码 参考 这篇博客将介绍使用计算机视觉和图像处理技术进行条形码检测的必要步骤,并演示使用Python编程语言和 ...

  9. 使用Python,OpenCV查找图像中的最亮点

    Python,OpenCV找出图像中的最亮点 1. 原理 2. 优化 3. 效果图 4. 源码 参考 这篇博客将向您展示如何使用Python和OpenCV查找图像中的最亮点,以及应用单行预处理代码-- ...

最新文章

  1. 【记录】解决uni-app 用nginx反向代理出现Invalid Host header问题
  2. 30K程序员的简述:如何成为高级开发人员
  3. 这是时间的推移 不是系统的分类
  4. Linux如何通过csv导入neo4j,neo4j-import导入CSV 数据
  5. linux连接wifi账户密码忘了怎么办,路由器账户密码忘记了怎么办_无线路由器密码忘记了怎么找回-系统城...
  6. Java黑皮书课后题第6章:**6.24(显示当前日期和时间)程序清单2-7显示当前时间。改进这个例子,显示当前的日期和时间。程序清单6-12中的日历例子可以提供一些如何提供如何求年月日的思路
  7. maven常用的命令(window控制台和linux命令是一致的)
  8. Microsoft Teams的保留策略
  9. cuba.platform_CUBA 7.2 –有什么新功能?
  10. 【JS】实时监控页面,input框数值自动求和
  11. c语言商品货架管理_汽配仓库布局及管理
  12. Oracle注册表修改 乱码编码
  13. 从源码分析RocketMQ系列-Remoting通信架构源码详解
  14. EGit/User Guide
  15. 编译OpenJDK:invalid configuration Files: machine Files not recognized
  16. 单片机c语言曲普两只蝴蝶,51单片机蜂鸣器播放音乐代码(生日快乐 两只蝴蝶 祝你平安)...
  17. 回归、自回归、循环神经网络(RNN)、LSTM
  18. python3输入列表_[Python3] 列表的基本用法[TZZ]
  19. 不为环境所动就能成功——职场人士寓言(3)
  20. (很详细的)数据库Transact-SQL语句:数据查询(基本查询、嵌套查询、连接查询)

热门文章

  1. Redis的数据类型详解
  2. Redis自带压测工具(redis-benchmark.exe)
  3. web嵌入到原生的app里需要注意的事项
  4. luogu P2679——子串
  5. angularJS--多个控制器之间的数据共享
  6. MVC-07 案例1
  7. 信息编码:位操作布尔值编码
  8. 11月17日spring mvc入门培训
  9. docker-compose报错:(root) Additional property mail-service is not allowed
  10. python无法打印unicode编码_【整理】Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来或打印出来却是乱码...