参考官网 https://docs.python.org/3/library/json.html

https://docs.python.org/3/library/pickle.html

了解这两个模块首先要知道什么是序列化,反序列化

通常我们把变量从内存中变成可存储或传输的过程称之为序列化,序列化之后,就可以把序列化后的内容写入磁盘,或通过网络传输到别的机器上。

反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling

区别

1,pickle是一个序列化在文件中存储,提取对象的python模块,json是处理json语言的模块

2,JSON只能处理基本数据类型。pickle能处理所有Python的数据类型。

3,JSON用于各种语言之间的字符转换。pickle用于Python程序对象的持久化或者Python程序间对象网络传输,但不同版本的Python序列化可能还有差异。

json

json序列化,将之转换为字符串

dumps,dump (区别:dumps将对象序列号,dump将对象序列号并保存到文件)

dumps

为了效果展现加了pprint模块

import json
import pprint
a={"b": "Hello","c":'好',"a": 'world'}
b=json.dumps(a,ensure_ascii=False,indent=4,separators=(',', ':'),sort_keys=True)
#ensure_ascii默认开启不加会将中文字符转义,indent缩进默认无,separators分隔符默认(',', ':')
print(b)
print (type(b))
pprint.pprint(b)

输出

dump

#coding=utf-8
import json
dict1={"b": "Hello","c":'好',"a": 'world'}
with open('1.txt','a') as f:
json.dump(dict1,f,ensure_ascii=False,indent=4,separators=(',', ':'),sort_keys=True)

json反序列化

load,loads(区别loads将序列号字符串反序列化,load将序列化字符串从文件读取并反序列化)

loads

import json
import pprint
a={"b": "Hello","c":'好',"a": 'world'}
b=json.dumps(a,ensure_ascii=False,indent=4,separators=(',', ':'),sort_keys=True)
#ensure_ascii默认开启不加会将中文字符转义,indent缩进默认无,separators分隔符默认(',', ':')
c=json.loads(b,encoding='utf-8')
pprint.pprint(b)
pprint.pprint(c)

输出

load

#coding=utf-8
import json
import pprint
with open('1.txt','r',encoding='utf-8') as f:
a=json.load(f)
pprint.pprint(a)

输出

pickle模块

同样拥有dumps,dump,load,loads

dumps与loads

#coding=utf-8
import pickle
import pprint
dict1={"b": "Hello","c":'好',"a": 'world'}
a=pickle.dumps(dict1)
print(type(a))
pprint.pprint(a)
b=pickle.loads(a,encoding='utf-8')
pprint.pprint(b)
print(type(b))

输出

dump与load

#coding=utf-8
import pickle
import pprint
dict1={"b": "Hello","c":'好',"a": 'world'}
with open('1.txt','wb') as f:
pickle.dump(dict1,f)
with open('1.txt', 'rb') as f:
data = pickle.load(f)
pprint.pprint(data)

输出

shelve模块

import shelve
f=shelve.open('3.txt')
f['info']={'name':'liu','age':''}
#f['mode']={'txt'}
p=f.get('info')
q=f['info']['name']
print (p,q)

python jason,pickle的更多相关文章

  1. Python ,pickle

    @Python pickle模块学习   pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. ---------------------------------------- ...

  2. (Python编程)Pickle对象

    Programming Python, 3rd Edition 翻译 最新版本见:http://wiki.woodpecker.org.cn/moin/PP3eD 19.4. Pickled Obje ...

  3. Python 序列化 pickle/cPickle模块

    Python 序列化 pickle/cPickle模块 2013-10-17 Posted by yeho Python序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给 ...

  4. 从watevrCTF-2019:Pickle Store中学习python之pickle序列化漏洞

    从watevrCTF-2019:Pickle Store中学习python之pickle序列化漏洞 pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. 其本质是Picklin ...

  5. python3 jason & pickle

    #Author by Andy#_*_ coding:utf-8 _*_import jsonimport pickledef sayhello(name): print('Hello %s' %na ...

  6. 【python】pickle模块

    持久性的基本思想很简单.假定有一个 Python 程序,它可能是一个管理日常待办事项的程序,您希望在多次执行这个程序之间可以保存应用程序对象(待办事项).换句话说,您希望将对象存储在磁盘上,便于以后检 ...

  7. Python模块(pickle)

    pickle 序列化和反序列化 序列化作用 序列化使用 cPickle使用例 Python提供一个标准的模块,称为pickle.使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无 ...

  8. Python初学——pickle & set

    pickle 存放数据 保存和提取python运算完的结果 首先import pickle模块 定义一个字典: a_dict={'da':111,2:[23,1,4],'23':{1:2,'d':'s ...

  9. python序列化pickle/cPickle

    一.pickle/Cpickle简介 Python序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人.你会怎么做?这取决于你想要怎么保存,怎么重用,发送给谁.很多游 ...

随机推荐

  1. include 和require的区别

    相同点:include和require 都能把另外一个文件包含到当前文件中. 不同点:1.使用include时,当包含的文件不存在时,系统会报出警告级别的错误,程序会继续往下执行.   使用requi ...

  2. poj2155一个二维树状数组

                                                                                                         ...

  3. 在CentOS 7 上安装docker

    Docker CE Install yum-utils, which provides the yum-config-manager utility: $ sudo yum install -y yu ...

  4. SQLserver2008r2安装过程

    首先,下载SQLserver2008的安装包,下载完成打开是以下界面 点击开始安装,随着安装进程,点下一步 . 接着来到设置角色的过程,点击SQL功能安装 然后按下一步,来到功能选择,点击" ...

  5. js 按条件 serialize() 对应标签

    serialize 非常方便的帮我们创建 URL 编码文本字符串 输出的字符串格式为 a=1&b=2&c=3  直接可用于Url传参 下面介绍一下选择性的序列化某些标签的使用方法 将 ...

  6. 大概是:整数划分||DP||母函数||递推

    整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...

  7. PHP-FPM进程池探秘

    PHP 支持多进程而不支持多线程:PHP-FPM 在进程池中运行多个子进程并发处理所有连接请求.通过 ps 查看PHP-FPM进程池(pm.start_servers = 2)状态如下: root@d ...

  8. MYSQL 数据库高频查询语句整理

    一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...

  9. (转)十分钟入门pandas

    本文是对pandas官方网站上<10 Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook . 习 ...

  10. 浏览器缓存相关HTTP头部字段

    1.Cache-Control/Pragma 2.Expires 3.Last-Modified/Etag