简单谈谈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正则表达式 re模块使用说明
May 19 Python
Python语言的12个基础知识点小结
Jul 10 Python
Python中的异常处理学习笔记
Jan 28 Python
Python内置数据结构与操作符的练习题集锦
Jul 01 Python
Python实战之制作天气查询软件
May 14 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
浅析Python面向对象编程
Jul 10 Python
python 进程池pool使用详解
Oct 15 Python
详解python字符串驻留技术
May 21 Python
Python中异常处理用法
Nov 27 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
PHP ajax 分页类代码
2008/11/13 PHP
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
jquery实现图片轮播器
2017/05/23 jQuery
浅谈angular4生命周期钩子
2017/09/05 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python开发之for循环操作实例详解
2015/11/12 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
年度评优评先方案
2014/06/03 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL