函数和常用模块【day06】:pickle模块(十二)
本节内容
1、dumps序列化和loads反序列化
2、dump序列化和load反序列化
3、序列函数
1、dumps序列化和loads反序列化
dumps()序列化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import pickle info = { 'name' : "zhangqigao" , "age" : 22 , } with open ( "test.txt" , "wb" ) as f: #以二进制的形式写入 data = pickle.dumps(info) #序列化成字符串 f.write(data) #写入test.txt 文件中 #输出到test.txt文件中的内容 �}q (X ageqKX nameqX zhangqigaoqu. |
loads()反序列化
1
2
3
4
5
6
7
8
9
|
import pickle with open ( "test.txt" , "rb" ) as f: #以二进制的模式读 data = pickle.loads(f.read()) #反序列化操作 print (data.get( "age" )) #输出 22 |
2、dump序列化和load反序列化
dump()序列化
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import pickle info = { 'name' : "zhangqigao" , "age" : 22 , } with open ( "test.txt" , "wb" ) as f: pickle.dump(info,f) #序列化 #输出 �}q (X ageqKX nameqX zhangqigaoqu. |
load()反序列化
1
2
3
4
5
6
7
8
9
|
import pickle with open ( "test.txt" , "rb" ) as f: data = pickle.load(f) #反序列化成内存对象 print (data.get( "age" )) #输出 22 |
从上面的结果观察,json和pickle好像也没什么区别?但是别忘了,我们说,json只能序列化简单的数据类型,而pickle可以序列化python中所有的数据类型,包括函数、类等,下面我们就来看看,如何序列化函数的。还有就是,pickle序列化的是字节,而json序列化的是字符,这个要注意一下。
3、序列化函数
①序列化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import pickle def sayhi(name): #函数 print ( "hello:" ,name) info = { 'name' : "zhangqigao" , "age" : 22 , "func" :sayhi #"func"对应的值sayhi,是函数名 } with open ( "test.txt" , "wb" ) as f: data = pickle.dumps(info) f.write(data) #输出test.txt �}q (X funcqc__main__ sayhi qX ageqKX nameqX zhangqigaoqu. |
②反序列化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import pickle def sayhi(name): #在反序列化中必须写上此函数,不然会报错,因为在加载的时候,函数没有加载到内存 print ( "hello:" ,name) with open ( "test.txt" , "rb" ) as f: data = pickle.loads(f.read()) print (data.get( "age" )) data.get( "func" )( "zhangqigao" ) #执行函数sayhi #输出 22 hello: zhangqigao #输出的函数体中的逻辑也是可以变的,这边我就不做演示了 |
小结:
- json值支持简单的数据类型,pickle支持所有的数据类型。
- pickle只能支持python本身的序列化和反序列化,不能用作和其他语言做数据交互,而json可以。
- pickle序列化的是整个的数据对象,所以反序列化函数时,函数体中的逻辑变了,是跟着心的函数体走的。
- pickle和json在3.0中只能dump一次和load一次,在2.7里面可以dump多次,load多次,anyway,以后只记住,只需要dump一次,load一次就可以了。
函数和常用模块【day06】:pickle模块(十二)的更多相关文章
- Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块
一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...
- Json模块和Pickle模块的使用
在对数据进行序列化和反序列化是常见的数据操作,Python提供了两个模块方便开发者实现数据的序列化操作,即 json 模块和 pickle 模块.这两个模块主要区别如下: json 是一个文本序列化格 ...
- Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块
5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 ...
- json模块和pickle模块
json模块和pickle模块 一.json模块 作用:用python写了一个程序,用java写了一门程序,这两个程序需要数据之间交流,就产生了一种多种语言通用的数据类型,json串. 序列化:把对象 ...
- os模块、sys模块、json模块、pickle模块、logging模块
目录 os模块 sys模块 json模块 pickle模块 logging模块 os模块 功能:与操作系统交互,可以操作文件 一.对文件操作 判断是否为文件 os.path.isfile(r'路径') ...
- python中序列化json模块和pickle模块
内置模块和第三方模块 json模块和pickle 模块(序列化模块) 什么是序列化? 序列化就是将内粗这种的数据类型转成另一种格式 序列化:字典类型——>序列化——>其他格式——>存 ...
- Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)
Python 入门之 内置模块 -- 序列化模块(json模块.pickle模块) 1.序列化 Python中这种序列化模块有三种: json模块 : 不同语言都遵循的一种数据转化格式,即不同 ...
- python学习第四十八天json模块与pickle模块差异
在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点 跨语言,体积小 缺点 只能支持 int st ...
- os模块 sys模块 json/pickle 模块 logging模块
目录 模块 1. os模块 2. sys模块 3. json和pickle模块 4. logging模块 (1)日志配置 (2)实际开发中日志的使用 模块 1. os模块 os模块有什么用 与操作系统 ...
- json模块和pickle模块的用法
在python中,可以使用pickle和json两个模块对数据进行序列化操作 其中: json可以用于字符串或者字典等与python数据类型之间的序列化与反序列化操作 pickle可以用于python ...
随机推荐
- java 值传递 数组传递
在java中,不允许程序员选择值传递还是地址传递各个参数,基本类型总是按值传递.对于对象来说,是将对象的引用也就是副本传递给了方法,在方法中只有对对象进行修改才能影响该对象的值,操作对象的引用时是无法 ...
- mac安装sublime text 3,含注册码
软件下载地址: https://www.sublimetext.com/3 注册码如下: —– BEGIN LICENSE —– TwitterInc 200 User License EA7E-89 ...
- JS创建事件的三种方式(实例)
1.普通的定义方式 <input type="button" name="Button" value="确定" onclick=&qu ...
- Angular $cookieStore简单应用
angular.module('cookieStoreExample', ['ngCookies']) .controller('ExampleController', ['$cookieStore' ...
- python中Switch/Case实现
学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现.所以不妨自己来实现Switch/Case功能. 方法一 通过字典实现 ...
- html DOM導航
getElementByTagname()獲取所有相同標籤的節點列表,length表示節點的長度: lastchild表示最後一個子節點,firstchild表示第一個子節點,parentnode表示 ...
- appium框架感悟
个人觉得 所谓框架 最终结果就是对存放的元素进行处理 从底层获取数据 往上层传输数据过程中 对其一步一步的封装 由繁到简 再由繁至简
- 最大获利 HYSBZ - 1497 (最大权闭合图)
最大权闭合图: 有向图,每个点有点权,点权可正可负.对于任意一条有向边i和j,选择了点i就必须选择点j,你需要选择一些点使得得到权值最大. 解决方法: 网络流 对于任意点i,如果i权值为正,s向i连容 ...
- 【ZOJ2276】Lara Croft(bfs)
BUPT2017 wintertraining(16) #4 D ZOJ - 2276 题意 n个数字绕成环,有两个指示数字的方块,每次可以顺时针或逆时针移动其中一个,步数是它当前位置的数字a[i], ...
- 掌握 MySQL 这 19 个骚操作,效率至少提高3倍
本文我们来谈谈项目中常用的MySQL优化方法,共19条,利用好这19条方法,会让你的效率提升至少3倍. 1.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单 ...