码迷,mamicode.com
首页 > 编程语言 > 详细

python中的序列化和反序列化

时间:2019-10-31 18:15:17      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:***   部分   loading   理解   格式   使用   class   上下   key   

~~~~~~滴滴,,什么是序列呢?可以理解为序列就是字符串。
序列化的应用
  • 写文件(数据传输)
  • 网络传输
序列化和反序列化的概念
技术图片

 

 
  • 序列化模块:将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。
  • 序列化:内存中的对象转换为字节序列(字符串)
  • 反序列化:将字节序列转换为内存中的对象
序列化的目的:
1.以某种存储形式是自定义对象持久化
2.将对象从一个地方传递到另一个地方
3.使程序更具有维护性

各种模块的特点和应用

1.json模块:通用的序列化格式 只有很少的一部分数据类型通过json转化为字符串

 

可以进行序列化的:数字 字符串 元组 列表   不能转集合

 

1.dumps() 序列化方法
dic={‘a‘:‘1‘,"b":‘2‘}
print(type(dic),dic)
import json
str_dic=json.dumps(dic)
print(type(str_dic),str_dic)
结果:

<class ‘dict‘> {‘a‘: ‘1‘, ‘b‘: ‘2‘}
<class ‘str‘> {"a": "1", "b": "2"}

2.loads反序列化方法
dic_d=json.loads(str_dic)
print(type(dic_d),dic_d)
结果;
<class ‘dict‘> {‘a‘: ‘1‘, ‘b‘: ‘2‘}
3.dump和load  不加s  和文件相关的操作
import json
dic={‘a‘:‘1‘,"b":‘2‘}
f=open(‘fff‘,‘w‘,encoding=‘utf-8‘)
json.dump(dic,f)
f.close()

f=open(‘fff‘)
res=json.load(f)
print(type(res),res)
结果:
<class ‘dict‘> {‘a‘: ‘1‘, ‘b‘: ‘2‘}
技术图片

 

技术图片

 

当出现中文的时候:加上下面的参数,文件中显示的就是中文了
***ensure_ascii=False

json.dump({‘国籍‘:‘美国‘},f,ensure_ascii=False) ret = json.dumps({‘国籍‘:‘美国‘},ensure_ascii=False)
 
 

 

2.pickle模块:所有的python中的数据类型都可以转化 但只有pyth理解,且部分反序列化依赖代码

 

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

 

 

 

3.shelve模块:序列化句柄 直接操作,方便

此模块只提供给我们一个open方法,使用key来访问的,使用起来和字典类似

python中的序列化和反序列化

标签:***   部分   loading   理解   格式   使用   class   上下   key   

原文地址:https://www.cnblogs.com/lxx99/p/11772587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!