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核心模块方法
********************os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有 ...
- python常用模块:pickle、shelve、json、xml、configparser
今日内容主要有: 一.pickle模块二.shelve模块三.json模块四.json练习五.xml模块 六.xml练习七.configparser模块 一.pickle模块 #pickle是一个用来 ...
- Python常用模块——json & pickle
序列化模块 1.什么是序列化-------将原本的字典,列表等对象转换成一个字符串的过程就叫做序列化 2.序列化的目的 1.以某种存储形式使自定义对象持久化 2.将对象从一个地方传递到另一个地方 3. ...
- python常用模块之pickle
python1个json模块和1个pickle模块都是用于序列化的模块. 其中前文介绍过json模块.json模块只能序列化普通字符,比如字典.列表等.但是如果是函数呢?json其实是无法序列化的.这 ...
- python序列化模块 json&&pickle&&shelve
#序列化模块 #what #什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程叫做序列化. #why #序列化的目的 ##1.以某种存储形式使自定义对象持久化 ##2.将对象从一个地方传递 ...
- Python核心模块——urllib模块
现在Python基本入门了,现在开始要进军如何写爬虫了! 先把最基本的urllib模块弄懂吧. urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) ...
- [转]Python核心模块——urllib模块
现在Python基本入门了,现在开始要进军如何写爬虫了! 先把最基本的urllib模块弄懂吧. urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) ...
- python --- json模块和pickle模块详解
json:JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式(用于数据序列化和反序列化).(适用于多种编程语言,可以与其他编程语言做数据交换 ...
- Python常用模块——目录
Python常用模块学习 Python模块和包 Python常用模块time & datetime &random 模块 Python常用模块os & sys & sh ...
随机推荐
- js固定小数位数 .toFixed()
toFixed(num)法可把 Number 四舍五入为指定小数位数的数字. num为需要固定的位数 var num=2;console.log(num.toFixed(2));//2.00;var ...
- Linux文件访问流程及磁盘inode和block总结
Linux文件访问流程 inode是文件的唯一标识,文件名和inode的对应关系存放在上一级目录的block中:inode里有指向文件block的指针和文件的属性,从而通过block获得文件数据. 磁 ...
- go语言入门(一)
环境安装 Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Window 安装包下载地址为:https://golang.org/dl/. Windows ...
- Idea安装Scala插件(转)
原文链接:http://blog.csdn.net/a2011480169/article/details/52712421 参考博客: 1.http://wwwlouxuemingcom.blog. ...
- [ python ] 全局和局部作用域变量的引用
全局与局部变量的引用 (a)locals(b)globals 这里还需要在补充2个关键字一起比较学习,关键字:(c)nonlocal(d)global locals 和 globals locals: ...
- 苹果容器超出内容overflow滑动卡顿问题
-webkit-overflow-scrolling:touch; 就这么一段代码,加载需要滚动的容器css样式中.因为苹果的硬件加速产生的后果....
- poj 1077(BFS预处理+康托展开)
Eight Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 29935 Accepted: 13029 Special ...
- kali&BT安装好之后无法上网(包括Wifi)或者无法获得内网IP解决方法
大家都知道,要想进行内网渗透攻击,你必须要在那个内网里.但是大家在Vmware里安装kali的时候,大多数用户为了方便,未选择桥接模式,而是选择了使用与本机共享的IP网络当然,这样能上网,但是你的虚拟 ...
- 取消cp确认
使用cp -r -f 强制覆盖拷贝命令时,每一个文件都需要认为的键入“Y”进行确认 可以通过取消同名cp的定义,命令如下unalias cp
- MySQL5.7 centos7.2 yum 安装
1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ # 下载mysql源安装包 shell> wge ...