简单谈谈Python中的json与pickle


Posted in Python onJuly 19, 2017

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

• json: 用于字符串和python数据类型间进行转换

• pickle: 用于python特有的类型和python的数据类型间进行转换

Json 模块提供了四个功能:dumps、dump、loads、load

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

import pickle
data = {'k1':123, 'k2':888}
#dumps可以将数据类型转换成只有python才认识的字符串
p_str = pickle.dumps(data)
print p_str


输出结果:

(dp0
S'k2'
p1
I888
sS'k1'
p2
I123
s.

将数据转换成只有Python认识的字符串,并写入文件:

import pickle
data = {'k1':123, 'k2':888}
#打开文件,然后将data写入
with open('data.pkl', 'wb') as f:
 pickle.dump(data, f)
#同样读取的时候也需要打开文件
with open('data.pkl', 'rb') as f:
 data_1 = pickle.load(f)
print data_1


结果:

{'k2': 888, 'k1': 123}

文件中显示的内容与上面一致

json的用法和pickle是一样的

import json
data = {'k1':123, 'k2':888}
p_str = json.dumps(data)
print p_str, type(p_str)


结果:

{"k2": 123, "k1": 888} <type 'str'>

看起来好像是个字典,但要注意了,实际上这是个字符串,因为json只能是字符串格式,只是看起来像字典而已。

import json
data = {'k1':123, 'k2':123}
 
#打开文件,然后将data写入
with open('data.pkl', 'w') as f:
 json.dump(data, f)
 
#同样读取的时候也需要打开文件
with open('data.pkl', 'r') as f:
 data_1 = json.load(f)
print(data_1, type(data_1))


结果:

({u'k2': 123, u'k1': 123}, <type 'dict'>)

能够读取出来,而且类型也是正确的。

那pickle和json有什么区别呢?

在上面两段代码中,pickle写入和读取文件时,用的是 ‘b'模式,而json没有。

json是可以在不同语言之间交换数据的,而pickle只在python之间使用。

json只能序列化最基本的数据类型,而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。

以上这篇简单谈谈Python中的json与pickle就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的yield浅析
Jun 16 Python
Python计算三维矢量幅度的方法
Jun 15 Python
Python实现二分查找与bisect模块详解
Jan 13 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
python的dataframe和matrix的互换方法
Apr 11 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
Python3实现的简单三级菜单功能示例
Mar 12 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 Python
基于PyInstaller各参数的含义说明
Mar 04 Python
Python极值整数的边界探讨分析
Sep 15 Python
利用Python操作消息队列RabbitMQ的方法教程
Jul 19 #Python
高效测试用例组织算法pairwise之Python实现方法
Jul 19 #Python
Python实现将文本生成二维码的方法示例
Jul 18 #Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 #Python
Python使用plotly绘制数据图表的方法
Jul 18 #Python
python中日志logging模块的性能及多进程详解
Jul 18 #Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 #Python
You might like
关于php内存不够用的快速解决方法
2013/10/26 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
jqTransform美化表单
2015/10/10 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
Python中多线程及程序锁浅析
2015/01/21 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
关于Keras Dense层整理
2020/05/21 Python
在Python中实现字典反转案例
2020/12/05 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
linux面试题参考答案(4)
2013/01/28 面试题
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
学校百日安全活动总结
2015/05/07 职场文书
协议书格式模板
2016/03/24 职场文书
JavaScript实现两个数组的交集
2022/03/25 Javascript