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只接受文件描述符,完成读取文件和反序列化

三、jason和pickle模块

jason模块和pickle模块都有dumps、dump、loads、load四种方法,而且用法一样

不同的是json模块序列化出来是通用格式,其他编程语言都认识,就是普通字符串

而pickle模块序列化出来的只有python可以识别,其他编程语言不认识,表现为乱码

不过pickle可以序列化函数,但是其他文件想用该函数,在该文件中需要有该文件的定义(定义和参数必须相同,内容可以不同)

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

原文地址:https://www.cnblogs.com/ghming/p/8495512.html

时间: 2024-11-10 19:14:10

python3 jason 、pickle 和cpickle的相关文章

python3 jason & pickle

#Author by Andy#_*_ coding:utf-8 _*_import jsonimport pickledef sayhello(name): print('Hello %s' %name) return 'Hello %s' %name info={ 'name':'Andy', 'age':20, 'job':'doctor', } info1={ 'name':'Andy', 'age':20, 'job':'doctor', 'func':sayhello }# prin

python核心模块之pickle和cPickle讲解

pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别.要和其他语言交互,可以使用内置的json包使用pickle模块你可以把Python对象直接保存到文件,而不需要把他们转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件里. pickle模块会创建一个python语言专用的二进制格式,你基本上不用考虑任何文件细节,它会帮你干净利落地完成读写独享操作,唯一需要的只是一个合法的文件句柄. pickle模块中的两个主要函数是dump()和

pickle和cPickle:Python对象的序列化

目的:Python对象序列化 可用性:pickle至少1.4版本,cPickle 1.5版本以上 pickle模块实现了一种算法,将任意一个Python对象转化成一系列字节(byets).此过程也调用了serializing对象.代表对象的字节流之后可以被传输或存储,再重构后创建一个拥有相同特征(the same characteristics)的新的对象. cPickle使用C而不是Python,实现了相同的算法.这比Python实现要快好几倍,但是它不允许用户从Pickle派生子类.如果子类

Python3基础 pickle.dump和load 读一个对象进行序列化存储及读取

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: import pickle #我要存储的列表 myList=[123,456,789,'舍名利'] #我要将列表保存在这个文件中,文件的后缀名可以任意,因为起到的是提示作用 #wb 写入 二进制 saveFile=open('myList.pkl','wb') #将列表写入文件

Python3 json &pickle 数据序列化

json 所有语言通用的信息交换格式 json.dumps()将list列表.dict字典.元组.函数等对象转换为可以存储的字符格式存入文件 json.dump(数据对象名,已以写方式打开的对象) 直接写入,省略f.write()写法 这个过程称之为"序列化" json.loads("已读文件对象")将存入的数据类型列表.字典.函数等,读出来.还原为原来的数据类型. json.load("已打开文件对象")  这个过程叫做反序列化   pickl

Python3基础 pickle.dump和load 对一个对象进行序列化存储及读取

? ???????Python : 3.7.0 ?????????OS : Ubuntu 18.04.1 LTS ????????IDE : PyCharm 2018.2.4 ??????Conda : 4.5.11 ???typesetting : Markdown ? code """ @Author : 行初心 @Date : 18-9-24 @Blog : www.cnblogs.com/xingchuxin @Gitee : gitee.com/zhichengji

Python标准库 (pickle包,cPickle包)

在之前对Python对象的介绍中 (面向对象的基本概念,面向对象的进一步拓展),我提到过Python"一切皆对象"的哲学,在Python中,无论是变量还是函数,都是一个对象.当Python运行时,对象存储在内存中,随时等待系统的调用.然而,内存里的数据会随着计算机关机和消失,如何将对象保存到文件,并储存在硬盘上呢? 计算机的内存中存储的是二进制的序列 (当然,在Linux眼中,是文本流).我们可以直接将某个对象所对应位置的数据抓取下来,转换成文本流 (这个过程叫做serialize),

Python标准库05 存储对象 (pickle包,cPickle包)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢reverland纠错 在之前对Python对象的介绍中 (面向对象的基本概念,面向对象的进一步拓展),我提到过Python"一切皆对象"的哲学,在Python中,无论是变量还是函数,都是一个对象.当Python运行时,对象存储在内存中,随时等待系统的调用.然而,内存里的数据会随着计算机关机和消失,如何将对象保存到文件,并储存在硬盘上呢? 计算机的内存中存储的是二进

[转]python pickle包,cPickle包 存储

在之前对Python对象的介绍中 (面向对象的基本概念,面向对象的进一步拓展),我提到过Python“一切皆对象”的哲学,在Python中,无论是变量还是函数,都是一个对象.当Python运行时,对象存储在内存中,随时等待系统的调用.然而,内存里的数据会随着计算机关机和消失,如何将对象保存到文件,并储存在硬盘上呢? 计算机的内存中存储的是二进制的序列 (当然,在Linux眼中,是文本流).我们可以直接将某个对象所对应位置的数据抓取下来,转换成文本流 (这个过程叫做serialize),然后将文本