json:JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式(用于数据序列化和反序列化)。(适用于多种编程语言,可以与其他编程语言做数据交换)

  pickle:用于对Python对象结构进行序列化和反序列化。(只适用于python)

  对于人类而言,json是人类可读的,而pickle不是。

  json常用方法(支持列表,字典,元组等基本数据类型):

    dumps() --- 将传入的对象序列化。

      调用:json.dumps(object)

      例如(将列表,字典等不能直接写入文件的数据序列化成字符串):

>>> json.dumps([1,2,3,4])
'[1, 2, 3, 4]'
>>> json.dumps({'a':1, 'b':2, 'c':3, 'd':4})
'{"a": 1, "c": 3, "b": 2, "d": 4}'

    dump() --- 将传入的对象序列化并写入文件。

      调用:json.dump(object, fp)

      例如:

 import json

 list_1 = [1, 2, 3, 4]
dict_1 = {"a": 1, "c": 3, "b": 2, "d": 4} filename = "test.json" '''
with open(filename, 'w') as fp:
fp.write(json.dumps(list_1))
fp.write(json.dumps(dict_1))
''' #等同与上面注释中的代码
with open(filename, 'w') as fp:
json.dump(list_1, fp)
json.dump(dict_1, fp)

    

    test.json文件中的数据:

{"c": 3, "d": 4, "b": 2, "a": 1}

    load() --- 加载一杯存储在文件中的json数据。

      调用:json.load(fp)

      例如(是json.loads()的封装,可以发现数据加载回来后,数据类型没有发生变化):

import json

filename = "test.json"
with open(filename, 'r') as fp:
dict_1 = json.load(fp)
print(type(dict_1))
print(dict_1) >>> <class 'dict'>
>>> {'b': 2, 'a': 1, 'd': 4, 'c': 3}

    loads() --- 加载python数据。

      调用:json.loads(s) (s指从文件中读出来的数据)

      例如(相当于先读取再加载):

import json

filename = "test.json"
with open(filename, 'r') as fp:
s = fp.read(fp)
dict_1 = json.loads(s)
print(type(dict_1))
print(dict_1)

  pickle常用方法(使用等同于json中方法的使用,不过pickle支持更为复杂的数据类型,如果你的数据只用于python程序,推荐使用pickle):

    dumps() ---

    dump() ---

    load() ---

    loads() ---

python --- json模块和pickle模块详解的更多相关文章

  1. Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)

    Python 入门之 内置模块 -- 序列化模块(json模块.pickle模块) 1.序列化 Python中这种序列化模块有三种: ​ json模块 : ​ 不同语言都遵循的一种数据转化格式,即不同 ...

  2. 【python标准库模块四】Json模块和Pickle模块学习

    Json模块 原来有个eval函数能能够从字符串中提取出对应的数据类型,比如"{"name":"zhangsan"}",可以提取出一个字典. ...

  3. python中序列化json模块和pickle模块

    内置模块和第三方模块 json模块和pickle 模块(序列化模块) 什么是序列化? 序列化就是将内粗这种的数据类型转成另一种格式 序列化:字典类型——>序列化——>其他格式——>存 ...

  4. Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块

    一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...

  5. Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块

    5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 ...

  6. python学习第四十八天json模块与pickle模块差异

    在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点  跨语言,体积小 缺点 只能支持 int st ...

  7. json模块和pickle模块

    json模块和pickle模块 一.json模块 作用:用python写了一个程序,用java写了一门程序,这两个程序需要数据之间交流,就产生了一种多种语言通用的数据类型,json串. 序列化:把对象 ...

  8. Json模块和Pickle模块的使用

    在对数据进行序列化和反序列化是常见的数据操作,Python提供了两个模块方便开发者实现数据的序列化操作,即 json 模块和 pickle 模块.这两个模块主要区别如下: json 是一个文本序列化格 ...

  9. os模块、sys模块、json模块、pickle模块、logging模块

    目录 os模块 sys模块 json模块 pickle模块 logging模块 os模块 功能:与操作系统交互,可以操作文件 一.对文件操作 判断是否为文件 os.path.isfile(r'路径') ...

  10. python 3.x 爬虫基础---Urllib详解

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...

随机推荐

  1. Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触

    前言:在Remoting中处理事件其实并不复杂,但其中有些技巧需要你去挖掘出来.正是这些技巧,仿佛森严的壁垒,让许多人望而生畏,或者是不知所谓,最后放弃了事件在Remoting的使用.关于这个主题,在 ...

  2. 关于时间对象Date()

    今天使用XCUI开发过程中发现另一个诡异的问题,就是年月日初始化之后默认时分秒的问题. 问题发生在重构交互日志页面的时候,原来的老页面是这样的: 进入了交互日志页面之后,默认会初始化时间为今天的凌晨到 ...

  3. 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点

    使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...

  4. zookeeper原理介绍

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt354 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它 ...

  5. Project 8:利用递归算法求最大值

    目标:用递归算法实现求一个数组中的最大元素. 样例输入 5 1 4 2 5 3 样例输出 5 #include <stdio.h> int max(int *,int); int main ...

  6. 入门-什么是webshell?

    webshell是什么? 顾名思义,"web" - 显然需要服务器开放web服务,"shell" - 取得对服务器某种程度上操作权限. webshell常常被称 ...

  7. Java 第四周总结

    1. 本周学习总结 2. 书面作业 注释的应用: (1)源文件注释采用 /** -- */,在每个源文件的头部要有必要的注释信息,包括:文件名:文件编号:版本号:作者:创建时间:文件描述包括本文件历史 ...

  8. 201521123100 《Java程序设计》第3周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...

  9. 201521123011《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...

  10. 【化繁为简】非前端开发者的福音---CSS的预处理语言 Less&Sass

    写在前面:        众所周知CSS 是一门非程序式语言,没有变量.函数.SCOPE(作用域),在前期的界面样式设计时,需要书写大量看似没有逻辑的代码,不方便维护及扩展,也不利于重复调用,尤其对于 ...