参考官网 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. vim与sublime,程序员的屠龙刀和倚天剑

    对程序员来说,写代码是再熟悉不过的事情了,windows系统自带有记事本软件,能写写小规模的代码,可是代码量大了,它的局限性就暴露得很明显了:没有语法高亮,没有自动提示,不支持项目管理,界面难看-- ...

  2. hdu 5952 连通子图

    Counting Cliques Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  3. python --- socket模块详解

    socket常用功能函数: socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)                  ...

  4. util包里的一些类的使用

    好几天没有更新我的博客了 .国庆放假出去玩了一趟,这回来应该收心回到我的事业上了,哈哈哈!废话不多说,开始学习吧!首先今天来学习一些例子,这些例子可以回顾假期遗忘的知识,还能提高自己的能力.程序也会相 ...

  5. Docker到底是什么

    简单讲docker和vm虚拟机类似,都是在同一硬件上虚拟化出多个服务器应用实例的功能,据Bottomley声称,借助经过全面调优的容器系统,你就可以在同一硬件上拥有数量比使用Xen虚拟机或KVM虚拟机 ...

  6. python3.6安装pyspider

    win10下安装pyspider 1.pip 我在安装pip的时候默认安装了Pip. 如果没有的话:pip安装 2.PhantomJS PhantomJS 是一个基于 WebKit 的服务器端 Jav ...

  7. win10 uwp Window.Current.Dispatcher中Current为null

    本文说的是进行网络中异步界面出现的错误,可能带有一定的主观性和局限性,说的东西可能不对或者不符合每个人的预期.如果觉得我有讲的不对的,就多多包含,或者直接关掉这篇文章,但是请勿生气或者发怒吐槽,可以在 ...

  8. IIS asp.net环境

  9. 浅谈javascript继承体系

    最近做web项目,接触了jquery等框架,虽然使用方便,但是还是想学习下Javascript,今天分享下最近对js原型继承的理解,不足之处欢迎指正. 一.构造器的原型属性与原型对象 刚接触js时通常 ...

  10. LVS原理讲解

    一.lvs介绍 LVS的英文全名为"Linux Virtual Server",即Linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身 ...