博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9. 数据保存库
阅读量:6687 次
发布时间:2019-06-25

本文共 1182 字,大约阅读时间需要 3 分钟。

本库主要提供了把Python数据保存到磁盘文件的功能。picklemarshal模块能够把多种Python数据类型的数据生成一个字节流,然后从字节流创建一个对象。不同类型的DB管理模块支持HASH的映射字符串保存。

9.1 pickle--Python对象序列化操作

本模块主要提供了二进制协议来对Python对象结构进行序列化和反序列化的操作,事实上就是把一个内存里的对象保存到磁盘文件,以便以后能够再从磁盘文件上恢复过来。

9.1.1 与其他Python模块的关系

与模块marshal相比:

Python内部有一个模块marshal也实现了基本对象的序列化操作。而且它被使用来保存Python生成的代码为.pyc文件。可是模块pickle更通用一些,适用的场合更广泛一些,因此优先使用pickle。两者主要区别例如以下:

l 模块pickle拥有对一个对象已经被序列化过的跟踪。避免这个对象再次被序列化,相反模块marshal不具备这种功能。由于在序列化递归和共享对象时,就须要能识别出来那些已经被序列化了,而那些还没有,所以marshal不能用于递归的对象序列化,假设使用marshal去序列化递归的对象就会导致Python解析器崩溃。

另一种情况,就是一个对象被多个地方引用,在模块pickle仅仅会序列化一次。而模块marshal会序列化多次。这样就非常难保证引用计数的正确性。

l 模块marshal不能用来序列化用户自定义的类和它的实例。而模块pickle是能够。

l 模块marshal序列化的格式不能使用于不同的Python版本号,由于它主要的作用就是用来保存.pyc文件,它不保持向前兼容旧版本号的Python的功能。而模块pickle是保持不同Python版本号之间进行兼容。

 

json格式比較:

l JSON是一个文本格式的序列化协议,而pickle是二进制格式的序列化协议。

l JSON是一个人类可读取内容的协议。而pickle不行。

l JSON是广泛使用在Python语言之外。而pickle仅仅使用在Python语言之内。

l JSON缺省情况仅仅能表示一个Python内置的数据类型,而不能表示用户自定义的类型。而pickle是能够。

 

9.1.2 数据流格式

模块pickle生成的数据流格式仅仅能使用在Python领域。不像其他JSONXDR的标准,所以其他语言想訪问这种格式就会比較麻烦。默认的情况下,pickle是採用比較节省的二进制格式表示。假设还想降低数据流的大小,能够使用压缩模块对它进地压缩。

假设分析pickle产生的数据流格式,能够使用模块pickletools的功能来实现。pickle总共开发了5个版本号。在Python3.4版本号使用的是第4个版本号协议格式。

蔡军生  QQ:9073204  深圳

转载地址:http://nihao.baihongyu.com/

你可能感兴趣的文章
火狐浏览器截取整个网页方法:
查看>>
SQL Server 备份的 8 种方法。
查看>>
SQL Server 从数据库快照还原数据库
查看>>
$(document).keydown
查看>>
对Java、C#转学swift的提醒:学习swift首先要突破心理障碍。
查看>>
面向对象 2017-4-15
查看>>
java项目导出war包
查看>>
算法第三章实践报告
查看>>
linux应用之Mongodb的安装及配置(centos)
查看>>
Python 面向对象 --- eval 函数
查看>>
PHP的错误和异常处理
查看>>
eclipse svn快捷键
查看>>
两天快速开发一个自己的微信小程序
查看>>
z-index兼容问题:关于ie6/7下的z-index
查看>>
GOLANG SDK下载
查看>>
前端 JS POST提交
查看>>
SQL SERVER 事务处理通用模板
查看>>
js 多选选择删除数据
查看>>
如何创建一个完整的CRM工程
查看>>
学习内容
查看>>