博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十章、json和pickle模块
阅读量:5291 次
发布时间:2019-06-14

本文共 1469 字,大约阅读时间需要 4 分钟。

目录

第十章、json和pickle模块

一、序列化

把对象(变量)从内存中变成可存储或传输的过程称之为序列化,

序列化优点:

  1. 持久保存状态:内存本身无法保存数据的,当运行了一段时间,我们断电或者重启程序,内存关于这个程序之前的一段时间的数据都被清空了。但是断电或者重启程序之前将程序当前的所有数据都保存在文件中了,下次运行程序的时候还能载入之前保存在文件的数据,这就是序列化。
  2. 跨平台数据交互:序列化时不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。

二、json

json序列化

json数据类型和python数据类型对应关系表

Json类型 Python类型
{} dict
[] list
"string" str
520.13 int或float
true/false True/False
null None

反序列化和序列化的一个过程如图

json模å

import jsonstruct_data={"a":1,"b":2,"c":3}print(struct_data)json_data=json.dumps(struct_data)#{'a': 1, 'b': 2, 'c': 3}
with open("json序列化.json","w") as fw:    json.dump(struct_data,fw)    #生成了json文件
with open("json序列化.json") as fr:    data_load=json.load(fr)print(data_load)#{'a': 1, 'b': 2, 'c': 3}#反序列化json文件

三、pickle模块

和json区别在于:pickle的可以存储Python中的所有的数据类型,包括对象,而json不可以。 pickle不能跨平台,甚至不同版本python也不能兼容

#序列化内存中的数据import picklestruct_data={"a":1,"b":2,"c":3}print(struct_data)pickle_data=pickle.dumps(struct_data)print(pickle_data)#b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02K\x02X\x01\x00\x00\x00cq\x03K\x03u.'
#反序列化内存中的数据pickle_data=pickle.loads(pickle_data)print(pickle_data)#{'a': 1, 'b': 2, 'c': 3}
#pickle模块需要使用二进制存储,即'wb'模式存储#序列化数据,保存在文件中with open("pick序列化对象.pkl","wb") as fw:    pickle.dump(struct_data,fw)   #生成了pkl文件
#反序列化文件中的数据with open('Pickle序列化对象.pkl', 'rb') as fr:    pickle_data = pickle.load(fr)print(pickle_data)#{'a': 1, 'b': 2, 'c': 3}

转载于:https://www.cnblogs.com/demiao/p/11378018.html

你可能感兴趣的文章
FZU 2129 子序列个数 (动态规划)
查看>>
20155324 2016-2017-2 《Java程序设计》第7周学习总结
查看>>
CSS清浮动处理(Clear与BFC)
查看>>
thinkphp路由
查看>>
HDU - 1248-寒冰王座
查看>>
angular OnChange事件
查看>>
owin Oauth
查看>>
java String 强化操作 判断数字 字符串转阿拉伯数字,相似度等等
查看>>
Win(Phone)10开发第(5)弹,本地媒体服务器的一些注意事项
查看>>
[HDU5536] Chip Factory
查看>>
kettle转换和作业插件开发及调试
查看>>
npm run dev时报错“events.js:160 throw er; // Unhandled 'error' event”
查看>>
[java学习笔记]freemarker模板的页面静态化
查看>>
WebAPI使用多个xml文件生成帮助文档
查看>>
Android 获取手机本机内存、SD卡内存使用情况
查看>>
Use Drozer To Find SQL Inject In Diva Apk
查看>>
Qt中delete的问题
查看>>
Json数据格式
查看>>
Java String.split()用法小结(转载)
查看>>
自我介绍
查看>>