author:headsen chen

date::2018-04-10  09:56:54

json模块和pickle模块:

这是用于序列化的两个模块:

概念介绍:
json和pickle模块是将数据进行序列化处理,并进行网络传输或存入硬盘。
json: 用于字符串和python数据类型间进行转换(适用于python和其他语言之间进行类型转换)
pickle: 用于python特有的类型和python的数据类型间进行转换

json:模块提供了四个功能:dumps dump loads load
pickle:模块提供了四个功能:dumps dump loads load

使用方法:
使用前先导入该模块
import json
import pickle

总结区别:

pickcle和json的使用只有一点不一样:pickle使用的rb和wb模式,json使用的r和w模式,其余使用方法上一样的。
........................功能上:pickle用于python内部各种数据类型的转换,json用于python和其他语言之间的数据类型的转换和交换。
........................使用范围上:pickle可以序列化所有的数据类型包括类、函数,json只能序列化最基本的数据类型。

python2可以dump多次,load多次,2个次数都是一一对应的
python3只能dump多次,loads、load一次

自己试验的实例:

pickle  ==========================================================================

例1:pickle 内存对象的序列化(python3.0版本)

import pickle
d = {"k1":'123',"k2":'456'}
e = pickle.dumps(d)
print(e)
-----> 运行后生成了只有python才认识的特定的字符串

b'\x80\x03}q\x00(X\x02\x00\x00\x00k1q\x01X\x03\x00\x00\x00123q\x02X\x02\x00\x00\x00k2q\x03X\x03\x00\x00\x00456q\x04u.'

例2:pickle序列化在python2.0版本里:
#[root@nginx1 python]# python
Python 2.7.5 (default, Nov 6 2016, 00:28:07)

>>> import pickle
>>> d ={"k1": '123', "k2": "hello"}
>>> p_str = pickle.dumps(d)
>>> print( p_str)
(dp0
S'k2'
p1
S'hello'
p2
sS'k1'
p3
S'123'
p4
s.
>>>

例3:将已经生成的序列化的e,进行反转(反序列化)

import pickle
d = {"k1":'123',"k2":'456'}
e = pickle.dumps(d)
f = pickle.loads(e)
print(f)

----->
{'k1': '123', 'k2': '456'}

例4:将序列化后的数据写入到文件中

import pickle
d ={"k1": '123', "k2": "hello"}
with open('ss','wb') as jp:
     pickle.dump(d,jp)

运行后自动生成序列化的ss文件:
打开ss文件:

�}q (X k1qX 123qX k2qX helloqu. (只有python才认识的某种类型文件)

将ss文件反转(反序列化操作)

例5:将上述ss文件进行反转(反序列化)

import pickle
with open('ss','rb') as jp: #同样读取的时候也需要打开文件
e=pickle.load(jp)
print(e)
---->
{'k1': '123', 'k2': 'hello'} -----------> 发现和上文的d一模一样

json ==================================================================================
json的序列化和反序列化:

例6:内存对象的序列化和反序列化:
import json
d = {"k1":'123',"k2":'456'}
e = json.dumps(d)
f = json.loads(e)
print(d,type(d))
print(e,type(e))
print(f,type(f))

------->

{'k1': '123', 'k2': '456'} <class 'dict'>
{"k1": "123", "k2": "456"} <class 'str'>
{'k1': '123', 'k2': '456'} <class 'dict'>

例7:文件的序列化和反序列化:

import json
d = {"k1":'123',"k2":'456'}
with open('kk','w') as jp:
    json.dump(d,jp)

运行后生成kk 的文件,文件内容:
{"k1": "123", "k2": "456"}

将生成的kk文件进行反序列化:
import json
with open('kk','r') as jp:        #同样读取的时候也需要打开文件
d=json.load(jp)
print(d,type(d))

------>

{'k1': '123', 'k2': '456'} <class 'dict'>

=======================================================================================================

例8:json模块总体的总结:

JSON在python中分别由list和dict组成。

import json
s={1:1,2:2,3:3}
sjson=json.dumps(s)     # 将s进行序列化
s1=json.loads(sjson)         # 将sjson进行反序列化

with open(filename,format)as f:
     json.dump(s,f)           # 将s进行序列化并存入文件中
with open(filename)as f:
     for line in f.readlines():
print(json.loads(line))        # 从文件读取并进行反序列化输出

python中的json和pickle的更多相关文章

  1. Python中模块json与pickle的功能介绍

    json & pickle & shelve 1. json的序列化与反序列化 json的使用需要导入该模块,一般使用import json即可. json的序列化 方法1:json. ...

  2. python中的 json 模块使用

    (1)python 中生成 json 字符串: import json data = dict(ret=0, msg="Welcome, Login success!") json ...

  3. 在 Python 中使用 JSON

    在 Python 中使用 JSON 本教程将会教我们如何使用 Python 编程语言编码和解码 JSON.让我们先来准备环境以便针对 JSON 进行 Python 编程. 环境 在我们使用 Pytho ...

  4. 【python】python中的json、字典dict

    定义 python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转.既然都是key-value格式,为啥还需要进行格式 ...

  5. Python中的json操作

    Python中的json操作 标签(空格分隔): python 编码 json 字符串前缀问题 字符串前缀可以有r,u r:表示原始(raw)字符串,比如'\n'不会被转义.常用于正则. u:表示un ...

  6. python中读取json文件报错,TypeError:the Json object must be str, bytes or bytearray,not ‘TextIOWrapper’

    利用python中的json读取json文件时,因为错误使用了相应的方法导致报错:TypeError:the Json object must be str, bytes or bytearray,n ...

  7. python中的json的基本使用方法

    在python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间的接口, #!/usr/bin/env ...

  8. Python中的json学习

    p.p1 { margin: 0; font: 14px ".PingFang SC"; color: rgba(53, 53, 53, 1) } p.p2 { margin: 0 ...

  9. python中序列化json模块和pickle模块

    内置模块和第三方模块 json模块和pickle 模块(序列化模块) 什么是序列化? 序列化就是将内粗这种的数据类型转成另一种格式 序列化:字典类型——>序列化——>其他格式——>存 ...

随机推荐

  1. centos 基础环境配置

    1,安装EPEL的yum源 EPEL 是 Extra Packages for Enterprise Linux 的缩写(EPEL),是用于 Fedora-based Red Hat Enterpri ...

  2. 产品经理PM

    首先希望大家记住的就是,千万不要以为产品经理是什么高大上的光环,产品经理其实只是一种状态,一种心态而已. 大家可能看到BAT每年都会从校园里面招聘一些产品经理,尤其是我们腾讯,声称以产品为王,每年投产 ...

  3. Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet] 异常

    1. 异常描述 FATAL EXCEPTION: main Process: com.whereru.greengrass.goforit, PID: 13847 java.lang.RuntimeE ...

  4. 有趣的API: history pushState/popstate 无刷新跳转(pjax)

    API介绍 首先看看API如何使用: history.pushState(state, title, url) : 无刷新的向浏览器 历史最前方 加入一条记录. state(any) 需要保存的数据, ...

  5. 怎样优化UITableView的性能

    在iOS App中,UITableView应该是使用率最高的.同一时候也是最为复杂的视图. 差点儿全部自带的应用中都能看到它的身影,可见它的重要性. 在使用UITableView时,会常常遇到性能上的 ...

  6. redis命令_INCR

    INCR key 将 key 中储存的数字值增一. 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作. 如果值包含错误的类型,或字符串类型的值不能表示为数字,那 ...

  7. 语言中.C文件和.H文件的概念和联系

    //a.h void foo(); //a.c #include "a.h" //我的问题出来了:这句话是要,还是不要? void foo() { return; } //main ...

  8. lua工具库penlight--06数据(一)

    这篇太长了,分了两部分.(这个是机器翻译之后我又校对了一下,以后的都这样,人工翻译太累了.) 读数据文件 首先考虑清楚,你的确需要一个自定义的文件读入器吗?如果是,你能确定有能力写好吗? 正确,稳健, ...

  9. 全栈JavaScript之路(十四)HTML5 中与class属性相关的扩充

    1. getElementByClassName() :支持getElementsByClassName()方法的浏览器有IE 9+.Firefox 3+.Safari 3.1+.Chrome 和 O ...

  10. nginx中,$request_uri和$uri的区别

    nginx中,$request_uri和$uri的区别   $request_uri This variable is equal to the *original* request URI as r ...