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 相关文章推荐
pyv8学习python和javascript变量进行交互
Dec 04 Python
python实现定制交互式命令行的方法
Jul 03 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
python使用matplotlib画柱状图、散点图
Mar 18 Python
python zip,lambda,map函数代码实例
Apr 04 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 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开发过程中常用函数收藏
2009/12/14 PHP
通俗易懂的php防注入代码
2010/04/07 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
php微信开发之关注事件
2018/06/14 PHP
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
python中子类继承父类的__init__方法实例
2016/12/15 Python
Django开发中复选框用法示例
2018/03/20 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
Linux下多个Python版本安装教程
2018/08/15 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
美国运动鞋和运动服零售商:Footaction
2017/04/07 全球购物
工程测量与监理专业应届生求职信
2013/11/27 职场文书
园艺师求职信
2014/04/27 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python