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来反序列化。同时,这两个模块在处理自引用类型时会变得更加“聪明”,它不会无限制的递归序列化自引用对象,对于同一对象的多次引用,它只会序列化一次。

 

posted @ 2018-03-02 23:50  Guan_zi  阅读(547)  评论(0编辑  收藏  举报