1、序列化、反序列化介绍

序列化:把对象转换为字节序列的过程称为对象的序列化。

反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

2、pickle模块说明

python中的pickle模块实现了基本的数据序列化和反序列化。

通过pickle模块的序列化操作能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,能够从文件中创建上一次程序保存的对象。

pickle模块使用的数据格式是python专用的,能够把python对象直接保存到文件,而不需要转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件中。

3、pickle模块常用函数

(1)pickle.dump(obj, file, [,protocol])

函数的功能:将obj对象序列化存入已经打开的file中。

参数:

obj:想要序列化的obj对象。

file:文件名称。

protocol:序列化使用的协议。如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pickle# 将test对象序列化到文件中
def dump_test_data():test = [1, 2, 3]with open("test.pickle", "wb") as file:pickle.dump(test, file)

(2)pickle.load(file)

函数的功能:将file中的对象序列化读出。

参数:

file:文件名称。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pickle# 将文件中test对象序列化读出
def load_test_data():with open("test.pickle", "rb") as file:test = pickle.load(file)return test

(3)pickle.dumps(obj[, protocol])

函数的功能:将obj对象序列化为string形式,而不是存入文件中。

参数:

obj:想要序列化的obj对象。

protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pickle# 将test对象序列化为字符串形式
def dumps_test_data():test = [1, 2, 3]# dumps 将数据通过特殊的形式转换为仅python语言识别的字符串str_test = pickle.dumps(test)print(str_test)

(4)pickle.loads(string)

函数的功能:从string中读出序列化前的obj对象。

参数:

string:文件名称。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pickle# 从string中读出序列化前的对象
def loads_test_data():test = [1, 2, 3]str_test = pickle.dumps(test)# loads 将pickle数据转化为python的数据结构loads_test = pickle.loads(str_test)print(loads_test)

【pickle】详解python中的pickle模块(常用函数、示例)相关推荐

  1. python中延时函数_详解python中实现延时回调普通函数

    这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 前言 ...

  2. 详解Python中的itertools模块

    itertools模块的介绍 在Python中,迭代器(Iterator)是常用来做惰性序列的对象,只有当迭代到某个值的时候,才会进行计算得出这个值.因此,迭代器可以用来存储无限大的序列,这样我们就不 ...

  3. 详解python 中的 csv 模块

    编辑:Python之王 这篇博客就为你介绍一个知识点,python 内置模块 csv . csv(Comma-Separated Values)文件是什么? 它是一种文件格式,一般也被叫做逗号分隔值文 ...

  4. python修改html内容_详解Python利用Beautiful Soup模块修改内容示例代码

    Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python 库.它能够通过你喜欢的转换器实现惯用的文档导航.查找.修改文档的方式.他还能够修改HTML/XML文档的内容.这篇 ...

  5. python 中cookie_详解Python中的Cookie模块使用

    最近在用GAE开发自己的博客程序.虽然GAE的API没有显式的提供操作Cookie的方法,但他现有的架构,使我们有足够的自由来操作Cookie. Cookie 模块,顾名思义,就是用来操作Cookie ...

  6. python 文件流转base64_详解Python中使用base64模块来处理base64编码的方法

    base64模块是用来作base64编码解码的.这种编码方式在电子邮件中是很常见的. 它可以把不能作为文本显示的二进制数据编码为可显示的文本信息.编码后的文本大小会增大1/3. 闲话不说了,base6 ...

  7. python中heapq的库是什么_详解Python中heapq模块的用法

    详解Python中heapq模块的用法 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...

  8. pythonnamedtuple定义类型_详解Python中namedtuple的使用

    namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: na ...

  9. python xlrd安装_详解python中xlrd包的安装与处理Excel表格

    一.安装xlrd 地址 下载后,使用 pip install .whl安装即好. 查看帮助: >>> import xlrd >>> help(xlrd) Help ...

最新文章

  1. 决策树模型与学习《一》
  2. 基于 OpenCV 的图像分割项目实战
  3. FormShortCut MainForm 和 二级FORM
  4. 第一次二刷的电影:工作细胞
  5. oracle 获取一周七天,Oracle中求出本礼拜第一天和第七天的日期
  6. MapReduce之join操作
  7. 9.6.1 三维数据可视化之曲面图
  8. Leetcode每日一题:121.best-time-to-buy-and-sell-stock(买股票的最佳时机)
  9. 35岁真的是职场分水岭吗?
  10. java 送参数_关于java:如何以编程方式发送带参数的HTTP请求?
  11. Android提供两个常用的消息弹出框【Toast和Alert】
  12. Android Training精要(五)讀取Bitmap對象實際的尺寸和類型
  13. FFT海水模拟(又来了-_-b)
  14. ps怎么加底部阴影_PS给物体底部加阴影
  15. 能煮熟鸡蛋的慢 SQL!阿里巴巴数据中心的“煮蛋史”!
  16. 植物大战僵尸存档任务C1-01
  17. E9000刀片服务器维护记录
  18. 一览各类无人飞机设计方法
  19. 锁记——偏向锁注定过不好这一生
  20. android sdl,能通吃所有安卓手机的SDL究竟是何神通?

热门文章

  1. iOS,mac下使用Coding.Net
  2. 数据库系统概论(第十章: 数据库恢复技术)
  3. 打破网络上不实的健康新闻 朕亨公益教你如何辨识新闻真假
  4. justify/align-content/items使用区别
  5. MODBUS通信系列之数据处理
  6. STM32 + UCGUI+外扩NAND FLASH 中文字库支持方法
  7. 我是技术总监,我出来求职,竟然找不到工作!
  8. 稀疏索引、密集索引、聚簇索引、非聚簇索引
  9. 【TUXEDO】Linux下Tuxedo安装教程
  10. android性能排行,2018年11月Android手机性能排行 麒麟980碾压高通蝉联前三