python3 jason pickle 和cpickle
Posted Guan_zi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3 jason pickle 和cpickle相关的知识,希望对你有一定的参考价值。
python JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写。JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。
在python中,有专门处理jason格式的模块——jason和pickle
jason模块提供了四个方法:dumps、 dump 、loads、load
pickle模块也提供了四个功能:dumps、 dump、loads、load
一、dumps和dump
dumps和dump序列化方法
dumps只完成了序列化str
dump必须传文件描述符,将序列化的str保存在文件中
文件操作:
二、loads和load
loads和load反序列化方法
loads只完成了反序列化。
load只接受文件描述符,完成读取文件和反序列化
三、json和pickle模块
jason模块和pickle模块都有dumps、dump、loads、load四种方法,而且用法一样
不同的是json模块序列化出来是通用格式,其他编程语言都认识,就是普通字符串
而pickle模块序列化出来的只有python可以识别,其他编程语言不认识,表现为乱码
不过pickle可以序列化函数,但是其他文件想用该函数,在该文件中需要有该文件的定义(定义和参数必须相同,内容可以不同)
×四.json和pickle序列化区别
由此课件json和pickle序列化后数据是由不同的,如果进行文件操作json只需对文件进行str数据类型的‘r’、‘w’、‘r+’、‘w+’、‘a’方式打开读写,load\\dump操作;而pickle则是对文件进行bytes数据类型的‘rb’\\\'wb\'\\\'ab\'等之类的load\\dump操作。
五python对象与json对象的对应关系
五总结
1、json序列化方法
dumps:无文件操作 dump:序列化+写入文件
2、jason反序列化方法:
loads:无文件操作 load:读文件+反序列化
3、json模块序列化的数据更通用
pickle模块序列化数据仅python可用,但功能强大,可以序列化函数。
4、json模块可以序列化和反序列化的数据类型见上表
5、格式化写入文件利用 indent=4
cPckle
Python标准库提供pickle和cPickle模块。cPickle是用C编码的,在运行效率上比pickle要高,但是cPickle模块中定义的类型不能被继承(其实大多数时候,我们不需要从这些类型中继承,推荐使用cPickle)。cPickle和pickle的序列化/反序列化规则是一样的,使用pickle序列化一个对象,可以使用cPickle来反序列化。同时,这两个模块在处理自引用类型时会变得更加“聪明”,它不会无限制的递归序列化自引用对象,对于同一对象的多次引用,它只会序列化一次。
以上是关于python3 jason pickle 和cpickle的主要内容,如果未能解决你的问题,请参考以下文章