本节内容

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   #输出的函数体中的逻辑也是可以变的,这边我就不做演示了

小结:

  1. json值支持简单的数据类型,pickle支持所有的数据类型。
  2. pickle只能支持python本身的序列化和反序列化,不能用作和其他语言做数据交互,而json可以。
  3. pickle序列化的是整个的数据对象,所以反序列化函数时,函数体中的逻辑变了,是跟着心的函数体走的。
  4. pickle和json在3.0中只能dump一次和load一次,在2.7里面可以dump多次,load多次,anyway,以后只记住,只需要dump一次,load一次就可以了。

函数和常用模块【day06】:pickle模块(十二)的更多相关文章

  1. Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块

    一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...

  2. Json模块和Pickle模块的使用

    在对数据进行序列化和反序列化是常见的数据操作,Python提供了两个模块方便开发者实现数据的序列化操作,即 json 模块和 pickle 模块.这两个模块主要区别如下: json 是一个文本序列化格 ...

  3. Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块

    5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 ...

  4. json模块和pickle模块

    json模块和pickle模块 一.json模块 作用:用python写了一个程序,用java写了一门程序,这两个程序需要数据之间交流,就产生了一种多种语言通用的数据类型,json串. 序列化:把对象 ...

  5. os模块、sys模块、json模块、pickle模块、logging模块

    目录 os模块 sys模块 json模块 pickle模块 logging模块 os模块 功能:与操作系统交互,可以操作文件 一.对文件操作 判断是否为文件 os.path.isfile(r'路径') ...

  6. python中序列化json模块和pickle模块

    内置模块和第三方模块 json模块和pickle 模块(序列化模块) 什么是序列化? 序列化就是将内粗这种的数据类型转成另一种格式 序列化:字典类型——>序列化——>其他格式——>存 ...

  7. Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)

    Python 入门之 内置模块 -- 序列化模块(json模块.pickle模块) 1.序列化 Python中这种序列化模块有三种: ​ json模块 : ​ 不同语言都遵循的一种数据转化格式,即不同 ...

  8. python学习第四十八天json模块与pickle模块差异

    在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点  跨语言,体积小 缺点 只能支持 int st ...

  9. os模块 sys模块 json/pickle 模块 logging模块

    目录 模块 1. os模块 2. sys模块 3. json和pickle模块 4. logging模块 (1)日志配置 (2)实际开发中日志的使用 模块 1. os模块 os模块有什么用 与操作系统 ...

  10. json模块和pickle模块的用法

    在python中,可以使用pickle和json两个模块对数据进行序列化操作 其中: json可以用于字符串或者字典等与python数据类型之间的序列化与反序列化操作 pickle可以用于python ...

随机推荐

  1. 程序设计第三次作业---C++计算器雏形

    Github链接:https://github.com/Wasdns/object-oriented 题目:程序设计第三次作业 程序设计第三次作业附加 我的程序设计第三次作业附加 代码规范 更新时间: ...

  2. "一个程序员的生命周期"读后感

    这篇文章中作者叙述了自己和大多数大学生或许都会面对的问题,即是会走过挺多的歪路,面临很多的困难和压力,但是作者却从未放弃自己真正追求的东西.对于一个过来人的经验之谈,我们应该吸取经验,在大学好好去奋斗 ...

  3. 使用matlab自带工具实现rcnn

    平台:matlab2016b matlab自带一个cifar10Net工具可用于深度学习. 图片标注 这里使用的是matlab自带的工具trainingImageLabeler对图像进行roi的标注. ...

  4. ubuntu安装steam

    增加第三方自由库的软件支持 sudo add-apt-repository multiverse 增加更新支持包 sudo add-apt-repository multiverse 安装steam ...

  5. rabbitmq代码配置

    package com.qukoucai.test; import com.rabbitmq.client.AMQP;import com.rabbitmq.client.AMQP.BasicProp ...

  6. matplotlib之直接保存图片

    自动保存图表:pyplot.savefig('D:\\pic.png'),替代了 pyplot.show(). # 使用matplotlib.pyplot.scatter绘制散点 import mat ...

  7. face detection,landmark, recognition with deeplearning

    人脸特征点定位 Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Neural Networks c ...

  8. poj1154 【DFS】

    LETTERS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8976   Accepted: 4017 Descripti ...

  9. FreeBSD ZFS

    FreeBSD ZFS https://www.cnblogs.com/hadex/p/6068476.html 参考資料 http://docs.oracle.com/cd/E37934_01/ht ...

  10. emwin 之消息 WM_INIT_DIALOG

    @2018-08-09 小记 消息 WM_INIT_DIALOG 在创建窗口时首先发送且只在创建窗口时发送即只发送这一次