python核心模块之pickle和cPickle讲解
pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别。要和其他语言交互,可以使用内置的json包使用pickle模块你可以把 Python 对象直接保存到文件,而不需要把他们转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件里。 pickle模块会创建一个python语言专用的二进制格式,你基本上不用考虑任何文件细节,它会帮你干净利落地完成读写独享操作,唯一需要的只是一个合法的文件句柄。
pickle模块中的两个主要函数是dump()和load()。dump()函数接受一个文件句柄和一个数据对象作为参数,把数据对象以特定的格式保存到给定的文件中。当我们使用load()函数从文件中取出已保存的对象时,pickle知道如何恢复这些对象到它们本来的格式。
dumps()函数执行和dump() 函数相同的序列化。取代接受流对象并将序列化后的数据保存到磁盘文件,这个函数简单的返回序列化的数据。
loads()函数执行和load() 函数一样的反序列化。取代接受一个流对象并去文件读取序列化后的数据,它接受包含序列化后的数据的str对象, 直接返回的对象。
cPickle是pickle得一个更快得C语言编译版本。
pickle和cPickle相当于java的序列化和反序列化操作
#! /usr/local/env python
# -*- coding=utf-8 -*-
if __name__ == "__main__":
import cPickle
#序列化到文件
obj = 123,"abcdedf",["ac",123],{"key":"value","key1":"value1"}
print obj
#输出:(123, abcdedf, [ac, 123], {key1: value1, key: value})
#r 读写权限 r b 读写到二进制文件
f = open(r"d:a.txt","r ")
cPickle.dump(obj,f)
f.close()
f = open(r"d:a.txt")
print cPickle.load(f)
#输出:(123, abcdedf, [ac, 123], {key1: value1, key: value})
#序列化到内存(字符串格式保存),然后对象可以以任何方式处理如通过网络传输
obj1 = cPickle.dumps(obj)
print type(obj1)
#输出:<type str>
print obj1
#输出:python专用的存储格式
obj2 = cPickle.loads(obj1)
print type(obj2)
#输出:<type tuple>
print obj2
#输出:(123, abcdedf, [ac, 123], {key1: value1, key: value})
python核心模块之pickle和cPickle讲解相关推荐
- python常用模块:pickle、shelve、json、xml、configparser
今日内容主要有: 一.pickle模块 二.shelve模块 三.json模块 四.json练习 五.xml模块 六.xml练习 七.configparser模块 一.pickle模块 #pickle ...
- Python核心模块——urllib模块
2019独角兽企业重金招聘Python工程师标准>>> urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法, ...
- python3 jason 、pickle 和cpickle
python JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写.JSON的数据格式其实就是python里面的字典格式,里面可以包含 ...
- 面试分析《疯狂Python讲义》PDF代码+《Python核心编程第3版》PDF代码问题
python语言现在很流行了,除了用在学校,也用在很多行业.python学起来较为简单,语法容易理解,也可用于数据分析. 国内的教材推荐看<疯狂python讲义>,对比国外也有很多好的参考 ...
- Python常用模块——目录
Python常用模块学习 Python模块和包 Python常用模块time & datetime &random 模块 Python常用模块os & sys & sh ...
- cpickle支持的python版本_Python序列化模块pickle和cPickle
Python的序列化是指把变量从内存中变为可以储存/传输的数据/文件的过程. 在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flatte ...
- python中pickle模块_Python pickle模块的用法
串行化主要用于网络传输或者持久化.我们知道,网络上的数据都是字节流,如果希望将某个对象传送给远端的机器,首先就必须将其转换成字节流,然后才可以在网络上传输.文件也是字节流,如果希望将某个对象保存到文件 ...
- python中常用的序列化模块_第六章 常用模块(5):python常用模块(序列化模块:pickle,json,shelve,xml)...
6.3.7 序列化模块 (pickle,json,shelve,xml) 文件写入,数据传输时,我们都是以字符串形式写入的(因为字符串可以encode成bytes). 那其他类型(比如字典,列表等)想 ...
- python模块--json \ pickle \ shelve \ XML模块
一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...
最新文章
- 独家 | 一文读懂Corda分布式记账技术
- Python打包EXE神器 pyinstaller
- MyBatis 快速入门
- 分布式精华问答 | 分布式系统面临哪些挑战?​
- php7数据库备份还原,基于thinkphp的数据库在线备份还原
- 用户和组 win2003
- java学习笔记_2020全网最全Java面试题,学习笔记!
- mysql 备份优化_MySQL 备份过程优化
- 网络安全实验室CTF—选择题解析 writeup
- POE 网络变压器 Pulse 普思
- 如何做网站推广?如何提高网站浏览量?
- pytest执行报错AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
- 重建堆栈指南及其自动化实现
- jquery easyui 全部图标
- VS2015编译时“ The POSIX name for this item is deprecated.”的分析
- 处理Whitelabel Error Page
- 在linux系统下暴力破解WiFi密码
- Synergy v1.10版本跨平台鼠键共享资源
- 如何判断Linux 内核是稳定版本还是测试版本
- 「Python条件结构」将两个数从小到大输出
热门文章
- asp.net core 实现支持多语言
- 定了!10 月 8 日!Jupyter Notebook 原生支持将正式来到 VS Code!
- 福爆 | 博客升级 .NET Core 3.0 又踩一坑
- .NET Core 的Generic Host 之Generic Host Builder
- 【中部武汉】理想离家并不遥远
- 在 ASP.NET Core 中安装 MVC
- .net core i上 K8S(四).netcore程序的pod管理,重启策略与健康检查
- 服务器win2008 R2 x64 部署ASP.net core到IIS 并解决 HTTP Error 502.5 的问题
- asp.net core集成CAP(分布式事务总线)
- 十二个 ASP.NET Core 例子