博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python序列化模块
阅读量:5377 次
发布时间:2019-06-15

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

什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。我们把变量从内存中变成可存储或传输的过程。

比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文件里,然后另一个python程序再从文件里读出来。但是我们都知道,对于文件来说是没有字典这个概念的,所以我们只能将数据转换成字典放到文件中。你一定会问,将字典转换成一个字符串很简单,就是str(dic)就可以办到了,为什么我们还要学习序列化模块呢?没错序列化的过程就是从dic 变成str(dic)的过程。现在你可以通过str(dic),将一个名为dic的字典转换成一个字符串,但是你要怎么把一个字符串转换成字典呢?聪明的你肯定想到了eval(),如果我们将一个字符串类型的字典str_dic传给eval,就会得到一个返回的字典类型了。eval()函数十分强大,但是eval是做什么的?e官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。BUT!强大的函数有代价。安全性是其最大的缺点。想象一下,如果我们从文件中读出的不是一个数据结构,而是一句"删除文件"类似的破坏性语句,那么后果实在不堪设设想。而使用eval就要担这个风险。所以,我们并不推荐用eval方法来进行反序列化操作(将str转换成python中的数据结构)
为什么需要序列化

序列化的目的

1、以某种存储形式使自定义对象的持久化。
2、将对象从一个地方传递到另一个地方。
3、使程序更具维护性。
数据结构 -> 字符串 : 序列化
字符串 -> 字符串 : 反序列化

一、Json

Json模块提供了四个功能:dumps、dump、loads、load。

import jsondic = {
'k1':'v1','k2':'v2','k3':'v3'}str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串print(type(str_dic),str_dic) #
{"k3": "v3", "k1": "v1", "k2": "v2"}#注意,json转换完的字符串类型的字典中的字符串是由""表示的dic2 = json.loads(str_dic) #反序列化:将一个字符串格式的字典转换成一个字典#注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示print(type(dic2),dic2) #
{'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}list_dic = [1,['a','b','c'],3,{
'k1':'v1','k2':'v2'}]str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型 print(type(str_dic),str_dic) #
[1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}]list_dic2 = json.loads(str_dic)print(type(list_dic2),list_dic2) #
[1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]
loads和dumps

 

转载于:https://www.cnblogs.com/weihengblog/p/8506239.html

你可能感兴趣的文章
安卓模拟器添加图片
查看>>
【转】25岁到55岁:如何规划人生最重要的三个十年
查看>>
yii去掉自动排序功能
查看>>
layui框架部分功能介绍
查看>>
Ubuntu中的快捷键
查看>>
转载:librdkafka问题总结
查看>>
[转]Qt 5.5 操作 Excel 的速度 效率问题
查看>>
【Linux】YUM Repositories for CentOS, RHEL & Fedora Systems
查看>>
前端生成图表
查看>>
第四章 实现Windows程序的数据更新
查看>>
02.python网络爬虫第二弹(http和https协议)
查看>>
测试之美---测试员的心思你不懂
查看>>
模拟只会猜题意 “东信杯”广西大学第一届程序设计竞赛(同步赛)
查看>>
数据挖掘成熟技术和应用
查看>>
为jquery添加cookie方法
查看>>
[js插件开发教程]实现一个比较完整的开源级选项卡插件
查看>>
elment ui 图片上传遇到的一些问题
查看>>
20145205 武钰 《网络对抗》Exp8 Web基础
查看>>
python的join()函数
查看>>
js学习总结----事件委托和事件代理(鼠标点击其他地方隐藏效果)
查看>>