python json.dumps() json.dump()的区别详解


Posted in Python onJuly 14, 2020

以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些。如果还有不好的地方,欢迎指出。

首先说明基本功能:

dumps是将dict转化成str格式,loads是将str转化成dict格式。

dump和load也是类似的功能,只是与文件操作结合起来了。

看代码实例:

In [1]: import json
 
In [2]: a = {'name': 'wang', 'age': 29}
 
In [3]: b = json.dumps(a)
 
In [4]: print b, type(b)
{"age": 29, "name": "wang"} <type 'str'>
 
In [11]: json.loads(b)
Out[11]: {u'age': 29, u'name': u'wang'}
 
In [12]: print type(json.loads(b))
<type 'dict'>

然后再看dump和dumps的区别,见代码:

In [1]: import json
 
In [2]: a = {'name': 'wang', 'age': 29}
 
In [3]: b = json.dumps(a)
 
In [4]: print b, type(b)
{"age": 29, "name": "wang"} <type 'str'>
 
In [5]: c = json.dump(a)
---------------------------------------------------------------------------
TypeError                 Traceback (most recent call last)
<ipython-input-5-92dc0d929363> in <module>()
----> 1 c = json.dump(a)
 
TypeError: dump() takes at least 2 arguments (1 given)

这里提示我们少一个参数,我们看一下帮助文件(iPyhton中可以直接使用help(json.dumps)来查看帮助文件):

dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw)
Serialize ``obj`` to a JSON formatted ``str``. 

dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw)
Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
``.write()``-supporting file-like object). 

简单说就是dump需要一个类似于文件指针的参数(并不是真的指针,可称之为类文件对象),可以与文件操作结合,也就是说可以将dict转成str然后存入文件中;而dumps直接给的是str,也就是将字典转成str。

例子见代码(注意文件操作的一些小细节):

In [1]: import json
 
In [2]: a = {'name': 'wang'}
 
In [3]: fp = file('test.txt', 'w')
 
In [4]: type(fp)
Out[4]: file
 
In [5]: json.dump(a, fp)
 
In [6]: cat test.txt
 
In [7]: fp.close()
 
In [8]: cat test.txt
{"name": "wang"}
In [9]: json.load(fp)
---------------------------------------------------------------------------
ValueError                Traceback (most recent call last)
<ipython-input-9-0064dabedb17> in <module>()
----> 1 json.load(fp)
 
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
  285
  286   """
--> 287   return loads(fp.read(),
  288     encoding=encoding, cls=cls, object_hook=object_hook,
  289     parse_float=parse_float, parse_int=parse_int,
 
ValueError: I/O operation on closed file
 
In [10]: fp = file('test.txt', 'r')
 
In [11]: json.load(fp)
Out[11]: {u'name': u'wang'}

注:实际中dump用的较少。

到此这篇关于python json.dumps() json.dump()的区别详解的文章就介绍到这了,更多相关python json.dumps() json.dump()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
解决python大批量读写.doc文件的问题
May 08 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
python批量修改ssh密码的实现
Aug 08 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
Pytorch 如何实现常用正则化
May 27 Python
尝试使用Python爬取城市租房信息
Apr 12 Python
pandas to_excel 添加颜色操作
Jul 14 #Python
Python数据可视化实现多种图例代码详解
Jul 14 #Python
简单的Python人脸识别系统
Jul 14 #Python
Python局部变量与全局变量区别原理解析
Jul 14 #Python
Python迭代器协议及for循环工作机制详解
Jul 14 #Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 #Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 #Python
You might like
基于PHP对XML的操作详解
2013/06/07 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
python mysql断开重连的实现方法
2019/07/26 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
Python高并发和多线程有什么关系
2020/11/14 Python
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
学校运动会开幕演讲稿
2014/01/04 职场文书
草船借箭教学反思
2014/02/03 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
工作失误检讨书范文
2015/01/26 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
四年级数学教学反思
2016/02/16 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python
Python标准库pathlib操作目录和文件
2021/11/20 Python
Tomcat弱口令复现及利用
2022/05/06 Servers