Python序列化与反序列化-json与pickle

                       Python序列化与反序列化-json与pickle

                                            作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.json的序列化方式与反序列化方式

1>.json序列化

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:[email protected]
 6
 7
 8 """
 9 一.什么是序列化:
10     我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫做picking,在其他语言中也被
11 称之为serialization,marshalling,flattening等等,都是一个意思。序列化之后,就可以把序列化后的内容写入磁盘,
12 或者通过网络传输到别的机器上,反过来,把变量从内容从序列化的对象重新督导内存里称之为反序列化,即unpicking。
13
14 二.序列化与编码的关系
15     序列化是在编码之前进行的操作。序列化是将各种数据类型统一处理为字符串,在序列化完成之后需要指定这些
16 字符串以何种方式(如,utf-8,gbk等等)存入硬盘哟!当然在反序列化一个文件的内容是,首先做的操作是解码,
17 也就是以哪种方式打开文件,如果编码格式打开正常就会获取到正确的字符串,这样就可以进行反序列化操作啦。
18
19 三.json模块
20     如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的办法就是序列化为json,
21 因为json表示出来就是一个字符串,可以被所有语言读取,也可以方便的存储到磁盘或者通过网络传输。json不仅是标准格式,
22 并且比XML更快,而且可以直接在web页面中读取,非常方便。
23
24 """
25
26 import json
27
28 accounts = {
29     "Name":"yinzhengjie",
30     "id": "210",
31     "banlance": "20000",
32 }
33
34 #序列化方式一:
35 # f = open(r"E:\Code\pycharm\文件存放处\python学习笔记\Day11\yinzhengjie.txt","w")     #打开文件
36 #
37 # json_str = json.dumps(accounts)                                                                 #序列化操作
38 #
39 # f.write(json_str)                                                                               #写入文件
40
41 #序列化方式二:
42 with open(r"E:\Code\pycharm\文件存放处\python学习笔记\Day11\yinzhengjie.txt","w")as f:
43     json.dump(accounts,f)

1 {"Name": "yinzhengjie", "id": "210", "banlance": "20000"}

yinzhengjie.txt文件内容

2>.反序列化方式

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:[email protected]
 6
 7 import json
 8
 9 with open(r"E:\Code\pycharm\文件存放处\python学习笔记\Day11\yinzhengjie.txt")as f:
10     print(json.load(f))

二.pickle序列化与反序列化

1>.序列化方式

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:[email protected]
 6
 7 import pickle
 8
 9 ‘‘‘
10 pickle:
11     1.>用于python特有的类型 和 python的数据类型间进行转换
12     2.>pickle模块提供了四个功能:dumps、dump、loads、load.
13     补充说明:将数据通过特殊的形式转换成只有python解释器识别的字符串,这个过程我们叫做序列化,而把哪些python能够识别的字符串转换成我们能看懂的叫做反序列化。
14 ‘‘‘
15
16
17 DataInfo = {
18     "Name":"尹正杰",
19     "Password":"123"
20 }
21
22
23
24 # #将数据通过特殊的形式转换为只有python语言知识的字符串并写入文件
25 # pickle_str = pickle.dumps(DataInfo)
26 # print(pickle_str)
27 # f = open("yinzhengjie.txt","wb")
28 # f.write(pickle_str)
29
30 #上面的写入文件的方法也可以这么玩,看起来更简单
31 with open("yinzhengjie.txt","wb") as f:
32     pickle.dump(DataInfo,f)

2.反序列化方式

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:[email protected]
 6
 7 import pickle
 8
 9 ‘‘‘
10 用于序列化的两个模块
11     1>.json:用于字符串 和 python数据类型间进行转换
12     2>.pickle:用于python特有的类型和python的数据类型间进行转换
13     json模块提供了四个功能:dumps、dump、loads、load
14     pickle模块提供了四个功能:dumps、dump、loads、load
15 ‘‘‘
16
17
18 f = open("yinzhengjie.txt","rb")
19
20 # print(pickle.loads(f.read()))         #loads方式反序列化
21
22 print(pickle.load(f))                   #load方式反序列化

三.对比json和pickle的异同:

  1>.相同点:都是用于系列化和反序列化的模块。

     2>.不同点:json是在所有语言都通用的数据存储格式,而pickle是仅仅只有python语言独有的存储格式。

原文地址:https://www.cnblogs.com/yinzhengjie/p/8531308.html

时间: 2024-11-17 06:19:48

Python序列化与反序列化-json与pickle的相关文章

python序列化与反序列化——json与pickle

一.定义 序列化是指将对象从内存中取出来写入存储区,如txt文件中,反序列则相反. 二. 应用场景 跨平台数据传输: 保留上一次运行程序时对对象的修改 三. 模块和函数 1. json dumps().dump()(序列化) loads().load() (反序列化) 2. pickle dumps().dump()(序列化) loads().load ()(反序列化) 四.  应用案例 1. pickle 1 import pickle 2 3 info = {"lyrics": &

6.python序列化功能之json&pickle

json模块是个非常重要的模块,可以实现任何语言之间跨平台的数据交换,还可以实现一些比较简单的数据类型的持久化.(这里的持久化就是说,把python内部一些比较简单的数据类型,比如说像字符串,列表,元组,字典之类的数据类型,转换为json字符串的标准格式,保存到硬盘中.) json模块常用函数: json.dumps():将python以字典为主的数据类型,包括(列表,元组,等)转换为json字符串. json.loads():将json字符串转换为python可识别的数据类型. json.du

Jackson序列化和反序列化Json数据完整示例

Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会出现各种类库,框架以及工具来解决这些基础的问题,Jackson就是这些工具中的一个,使用这个工具开发者完全可以从手工结束Json数据的重复劳动中解放出来.使用Jackson首先需要下载相应的类库,如下的Maven dependency列出了完整的POM dependency. 1 <dependen

C#序列化及反序列化Json对象通用类JsonHelper

当今的程序界Json大行其道.因为Json对象具有简短高效等优势,广受广大C#码农喜爱.这里发一个序列化及反序列化Json对象通用类库,希望对大家有用. public class JsonHelper { #region 对象类型序列化为json 字符 /// <summary> /// 对象类型序列化为json 字符 /// </summary> /// <typeparam name="T">实体类型</typeparam> ///

Newtonsoft.Json.4.5.0 序列化与反序列化json字符串使用方法总结

在VS里下载安装: Json.NET 5.0.6 http://www.nuget.org/packages/Newtonsoft.Json/5.0.6 反序列化json字符串为List: json字符串如下: 1 {"docs": [{ 2 "uid": 2629577, 3 "nickname": "枕边疯电台", 4 "is_v": "true", 5 "category

python序列化与反序列化(json与pickle)

在python中,序列化可以理解为将python中对象的编码格式转换为json(pickle)格式的字符串,而反序列化可以 理解为将json(pickle)格式的字符串转换为python中对象的编码格式 举一个简单的例子,我们在vmvare环境下编写python程序,然后需要临时走开一下,但是我们又不想把这个vmvare关闭,这个时候我们可以选择挂机,这样我们再回来继续操作时候,就可以直接恢复到走之前的状态,那么我们之前编写的代码及vmvare的状态是保存在哪里了呢,实际上是保存在文件当中来了,

python序列化与反序列化(json、pickle)

1.什么是序列化&反序列化? 序列化:将字典.列表.类的实例对象等内容转换成一个字符串的过程. 反序列化:将一个字符串转换成字典.列表.类的实例对象等内容的过程 PS:Python中常见的数据结构可以统称为容器.序列(如列表和元组).映射(如字典)以及集合(set)是三类主要的容器. 场景一:我们在python中将一个功能给另外一段程序使用,怎么给? 方法一:功能存到文件,然后另一个python程序再从文件里读出来. 场景二:现在反过来怎么把读出来的文件字符串转换成字典? 方法二:eval()函

Python—序列化和反序列化模块(json、pickle和shelve)

什么是序列化 我们把对象(或者变量)从内存中变为可存储或者可传输的过程称为序列化.在python中为pickling,在其他语言中也被称之为serialization,marshalling,flattening等等.即序列化之后就可以将内存中的程序内容写入硬盘或者通过网络传输到其他机器上去.反序列化的过程则相反:将硬盘中的内容变为可以在内存中运行的程序的过程称为反序列化. Json模块 # encoding:utf-8 # 通过序列化和反序列化将内容存储到文件 import json json

python课堂整理26 ---json、pickle、shelve模块(序列化处理)

一.序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,python中叫pickling 序列化之后就可以把序列化后的内容写入磁盘或通过网络传输到别的机器上 反序列化:unpickling,也就是loads的过程 二.json模块 功能:处理成字符串 可以让不同语言间进行数据交换 import json dic = {"name": "alex"} data = json.dumps(dic) print(data, type(data)) 经js