python --- json模块和pickle模块详解

  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)

      例如:

 1 import json
 2
 3 list_1 = [1, 2, 3, 4]
 4 dict_1 = {"a": 1, "c": 3, "b": 2, "d": 4}
 5
 6 filename = "test.json"
 7
 8 ‘‘‘
 9 with open(filename, ‘w‘) as fp:
10     fp.write(json.dumps(list_1))
11     fp.write(json.dumps(dict_1))
12 ‘‘‘
13
14 #等同与上面注释中的代码
15 with open(filename, ‘w‘) as fp:
16     json.dump(list_1, fp)
17     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() ---

时间: 2024-07-29 06:42:15

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

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

Python 入门之 内置模块 -- 序列化模块(json模块.pickle模块) 1.序列化 Python中这种序列化模块有三种: ? json模块 : ? 不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串.(比如Python的一个列表[1, 2, 3]利用json转化成特殊的字符串,然后在编码成bytes发送给php的开发者,php的开发者就可以解码成特殊的字符串,然后在反解成原数组(列表): [1, 2, 3]) ? json序列化只支持部分Python数据结构:dict,l

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

5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 5.1 使用sys.argv进行登录判断,跳过 i/o阻塞 #使用sys.argv进行登录判断,跳过 i/o阻塞 import s

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

Json模块 原来有个eval函数能能够从字符串中提取出对应的数据类型,比如"{"name":"zhangsan"}",可以提取出一个字典.json模块可一样实现功能,但是更加强大,eval只能识别到python语言的数据结构.json可以识别多语言的数据结构 模块的导入 import json 将数据类型封装成json格式(字符串)用的是dumps dic = {"name":"CodeScrew"} d

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

在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点  跨语言,体积小 缺点 只能支持 int str list tuple dict pickle 的优点和缺点 优点 专门为python设计,支持python所有的数据类型 缺点 只能python使用,存储数据占空间大 文章来自 www.96net.com.cn 原文地址:https://www.cnblogs.com/96net/p/97806

json模块和pickle模块

json模块和pickle模块 一.json模块 作用:用python写了一个程序,用java写了一门程序,这两个程序需要数据之间交流,就产生了一种多种语言通用的数据类型,json串. 序列化:把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening. 序列化的优点: 持久保存状态:内存是无法永久保存数据的,当程序运行了一段时间,我们断电或者重启程序,内存中关于这个

微赞微擎手动增加模块数据库表结构详解

微赞微擎手动增加模块数据库表结构详解 有时候微擎或微赞的模块没有安装模块的xml文件,那我们先想安装到自己的系统上,要怎么处理呢,下面我们详细的介绍下步骤,个人能力有限,如有不正确之处,敬请谅解~ 1.模块的代码复制 这个就不用多说了吧,当然需要把相应的addons文件夹里的模块复制到自己系统的目录里,不然不要做一下的事情了 2.数据库表结构修改 代码复制过来,如果有相应的xml安装包或者install.php文件,可以直接安装,但是我们这里讲的是没有,那只能把原来要复制的表结构记录复制过来,插

python处理word文件:win32com用法详解

目标:用python处理doc文件 方法:引入win32com模块 ************************************************************************** 一.安装 ************************************************************************** 首先要先下载安装win32com模块(起先在linux下装不成功,后在windows下面成功了...) 下载地址:http

**Python中的深拷贝和浅拷贝详解

Python中的深拷贝和浅拷贝详解 这篇文章主要介绍了Python中的深拷贝和浅拷贝详解,本文讲解了变量-对象-引用.可变对象-不可变对象.拷贝等内容. 要说清楚Python中的深浅拷贝,需要搞清楚下面一系列概念: 变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝) [变量-对象-引用] 在Python中一切都是对象,比如说:3, 3.14, 'Hello', [1,2,3,4],{'a':1}...... 甚至连type其本身都是对象,type对象 Python中变量与C/

Python:file/file-like对象方法详解【单个文件读写】

IO中读写文件操作方法汇总!----The_Third_Wave的学习笔记! 本文由@The_Third_Wave(Blog地址:http://blog.csdn.net/zhanh1218)原创.不定期更新,有错误请指正. Sina微博关注:@The_Third_Wave 如果这篇博文对您有帮助,为了好的网络环境,不建议转载,建议收藏!如果您一定要转载,请带上后缀和本文地址. class file(object) |  file(name[, mode[, buffering]]) -> fi

快速部署Python应用:Nginx+uWSGI配置详解

快速部署Python应用:Nginx+uWSGI配置详解 相比于PHP,Python应用的部署很麻烦,比较常用的方法有fcgi与wsgi,然而这两种都很让人头痛.文章介绍了Nginx+uwsgi的简便方法,来快速的部署Python应用. AD: 在PHP里,最方便的就是deployment了,只要把php文件丢到支持PHP的路径里面,然后访问那个路径就能使用了:无论给主机添加多少PHP应用,只要把目录改好就没你的事了,完全不用关心php-cgi运行得如何,deployment极为方便. 反观Py