• 每次打开一个文件,只dump1次
  • json.dump(dump的内容,文件句柄)
  • json.load(文件句柄)
  • json可以处理列表/字典/字符串等简单数据类型,但是不能处理复杂的数据类型,如函数的内存地址
  • 不同语言间都可以用json文件
  1. import json
  2. dict1={'name':'alex','age':22,'salary':1000}
  3. print('dict is %s\ndumping dict to file...' % (dict1))
  4. fd = open('fd.txt','w',encoding='utf-8')
  5. # with open('fd.txt','w',encoding='utf-8') as fd:
  6. # json.dump(dict1,fd)
  7. dict2={'name':'oldboy','age':32,'salary':2000}
  8. # with open('fd.txt','w',encoding='utf-8') as fd:
  9. # json.dump(dict2,fd)
  10. json.dump(dict1,fd)
  11. fd.close()
  12. # json.dump(dict2,fd)
  13. fd = open('fd.txt','r',encoding='utf-8')
  14. print('load content from file...')
  15. print(json.load(fd))
  16. fd.close()
    output
    dict is {'age': 22, 'salary': 1000, 'name': 'alex'}
    dumping dict to file...
    load content from file...
    {'age': 22, 'salary': 1000, 'name': 'alex'}
    dumping dict to file...
  1. import json
  2. dict1={}
  3. def func():
  4. print('in the func')
  5. dict1['name']=func
  6. fd = open('fdw.txt','w',encoding='utf-8')
  7. print('dumping dict to file...' % (dict1))
  8. json.dumps(dict1,fd)
  9. fd.close()
    error
    TypeError: <function func at 0x7f0828c68488> is not JSON serializable
  • pickle能处理python所有的数据类型
  1. import pickle
  2. dict1={}
  3. def func():
  4. print('in the func')
  5. dict1['name']=func
  6. fd = open('fdw.txt','wb')
  7. print('dumping dict to file... %s' % (dict1))
  8. pickle.dump(dict1,fd)
  9. fd.close()
  10. fd = open('fdw.txt','rb')
  11. print(pickle.load(fd))
  12. fd.close()
    output
    dumping dict to file... {'name': <function func at 0x7fa1904d4488>}
    {'name': <function func at 0x7fa1904d4488>}

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

  • 将一个对象转换成json格式的字符串

loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance
containing a JSON document) to a Python object.

  • 将一个json格式的对象反序列成python对象
  1. import json
  2. l1 = ["alex", 123, "eric"]
  3. l2 = ["alex", 123, 'eric']
  4. s1 = """ ["alex", 123, "eric"] """
  5. s2 = """ ["alex", 123, 'eric'] """
  6. print(json.dumps(l1),type(json.dumps(l1))) # list to str
  7. print(json.dumps(l2),type(json.dumps(l2))) # list to str
  8. print(json.dumps(s1),type(json.dumps(s1))) # still str
  9. print(json.dumps(s2),type(json.dumps(s2))) # still str
  10.  
  11. # 四个正确
  12. # print(json.loads(l1)) # json格式需要字符串,这是列表
  13. # print(json.loads(l2)) # 同上
  14. print(json.loads(s1),type(json.loads(s1))) # str to list,json格式需要双引号
  15. # print(json.loads(s2)) # 格式错误,有单引号
  16.  
  17. dict1={}
  18. dict1["name"]="xxx"
  19. print(json.dumps(dict1),type(json.dumps(dict1)))
  20. # str1='''dict1["name"]="xxx"'''
  21. # print(json.loads(str))
  22.  
  23. l = ['iplaypython', [1, 2, 3], {'name':'xiaoming'}]
  24. encoded_json = json.dumps(l)
  25. print(encoded_json,type(encoded_json))
  26. decode_json = json.loads(encoded_json)
  27. print(decode_json,type(decode_json))
  28.  
  29. 输出

["alex", 123, "eric"] <class 'str'>
["alex", 123, "eric"] <class 'str'>
" [\"alex\", 123, \"eric\"] " <class 'str'>
" [\"alex\", 123, 'eric'] " <class 'str'>
['alex', 123, 'eric'] <class 'list'>
{"name": "xxx"} <class 'str'>
["iplaypython", [1, 2, 3], {"name": "xiaoming"}] <class 'str'>
['iplaypython', [1, 2, 3], {'name': 'xiaoming'}] <class 'list'>

python3.x 基础四:json与pickple的更多相关文章

  1. python3.x 基础四:目录获取及目录规范

    1.获取目录 import os,sys print('程序文件运行相对位置>>',os.path.abspath(__file__)) print('程序文件上级绝对目录>> ...

  2. python3.x 基础四:生成器与迭代器

    1.预先存值到内存,调用之前已经占用了内存,不管用与不用,都占用内存 >>> a=[1,2,3,4,5] >>> type(a) <class 'list'& ...

  3. Python 基础 四 面向对象杂谈

    Python 基础  四  面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...

  4. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

  5. Bootstrap<基础四> 代码

    Bootstrap 允许您以两种方式显示代码: 第一种是 <code> 标签.如果您想要内联显示代码,那么您应该使用 <code> 标签. 第二种是 <pre> 标 ...

  6. 从零开始学习PYTHON3讲义(四)让程序更友好

    <从零开始PYTHON3>第四讲 先看看上一讲的练习答案. 程序完成的是功能,功能来自于"程序需求"("需求"这个词忘记了什么意思的去复习一下第二讲 ...

  7. C#_02.13_基础四_.NET方法

    C#_02.13_基础四_.NET方法 一.方法概述: 方法是一块具有名称的代码.可以通过方法进行调用而在别的地方执行,也可以把数据传入方法并接受数据输出. 二.方法的结构: 方法头  AND  方法 ...

  8. Java基础-处理json字符串解析案例

    Java基础-处理json字符串解析案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible ...

  9. python3字典:获取json响应值来进行断言的用法详解

    在Python中我们做接口经常用到一些json的返回值我们常把他转化为字典,在前面的python数据类型详解(全面)中已经谈到对字典的的一些操作,今天我们就获取json返回值之后,然后转化为字典后的获 ...

随机推荐

  1. 标准库hashlib模块

    hashlib模块用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD5 算法(都是基于hash的算法, ...

  2. qemu-img 整理

    qemu-img命令语法: qemu-img command [command options] check命令: check [-f fmt < qcow2 | qed | vdi >] ...

  3. [每日短篇] 1C - Spring Data JPA (0)

    2019独角兽企业重金招聘Python工程师标准>>> 准备把 Spring Data JPA 完整看一遍,顺便把关键要点记录一下.在写这篇文章的今天,再不用 Spring Boot ...

  4. 第 43 章 Baidu Map

    43.1. BMap.Circle var point = new BMap.Point(22.111, 114.111); var styleCircleF = { strokeColor:&quo ...

  5. ASP.NET MVC使用log4net

    本文介绍如何在ASP.NET MVC中使用log4net来记录日志文件. 参考链接:https://www.codeproject.com/Articles/823247/How-to-use-Apa ...

  6. 现代企业要求上什么样的MES(四)

    一个制造企业要想盈利,在生产方面要做的无非是提高资源利用效率和缩短生产通过时间(生产周期),而实现这俩步骤需要生产状况的在线透明及避免薄弱环节的分析数据,由此达到改善生产状态的目的.在erp系统中,通 ...

  7. spring内嵌jetty容器,实现main方法启动web项目

    Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可以将 ...

  8. vim基础快捷键

    vim快捷键 1. 移动光标 快捷键 作用 h 光标向左移动一个字符 j 光标向下移动一个字符 k 光标向上移动一个字符 l 光标向右移动一个字符 6j 向下移动6个字符 Ctrl+f 屏幕向下移动一 ...

  9. Zuul源码分析

    先上一张流程图: 我们Zuul的使用如下: @SpringBootApplication @EnableZuulProxy public class ZuulApplication { public ...

  10. 仿站-获取网站的所有iconfont图标

    在仿站过程中,网站的iconfont查找非常浪费时间,这里教大家一次性获取网站iconfont的方法 1.打开 开发者工具 在element中搜索font-face,结果如下,复制font-face所 ...