days-json和pickle序列化

一.json模块

序列化:把一个对象的形态改变一下,使他能够存放在文件中,或者在网络上传输,序列化也叫持久化,是把对象存储到永久介质中,这样就不会因为掉电而丢失。

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,json用于字符串和python的数据类型进行转换,json模块提供了四个功能:dumps、dump、loads、load

json.dumps和json.loads实例:

1 #!/usr/bin/python3
2 import json
3 data = {‘name‘:‘JieSen‘,‘height‘:175,‘weight‘:‘68KG‘}
4 #dumps到字符串
5 json_str = json.dumps(data)
6 print(‘dumps到字符串:‘,json_str,‘类型:‘,type(json_str))
7 #loads回来
8 json_dict = json.loads(json_str)
9 print(‘loads回来:‘,json_dict,‘类型:‘,type(json_dict))

输出:

dumps到字符串: {"name": "JieSen", "height": 175, "weight": "68KG"} 类型: <class ‘str‘>

loads回来: {‘name‘: ‘JieSen‘, ‘height‘: 175, ‘weight‘: ‘68KG‘} 类型: <class ‘dict‘>

如果处理的是文件,而不是字符串,可以使用json.dump和json.load进行编码和解码。例如:

1 #!/usr/bin/python3
2 import json
3 with open(‘data_json.txt‘,‘w+‘,encoding=‘utf-8‘) as f:
4 json.dump(data,f)
5 with open(‘data_json.txt‘,‘r‘) as f:
6 data_r = json.load(f)
7 print(data_r)

输出:

{‘name‘:‘JieSen‘,‘height‘:175,‘weight‘:‘68KG‘}

二.pickle模块

pickle序列化对象是一个二进制字节,以便将一个文件存储保存到文件或者通过网络传输。

pickle.dump和pickle.load实例:

 1 #!/use/bin/python3
 2 import pickle
 3 data = {‘k1‘:1,‘k2‘:2}
 4 #以二进制方式打开一个文件并将数据dump保存到文件里面
 5 with open(‘pickle_data.txt‘,‘wb‘) as f:
 6     pickle.dump(data,f)
 7 #以二进制读取方式打开文件并load加载
 8 with open(‘pickle_data.txt‘,‘rb‘) as f:
 9     fb = pickle.load(f)
10     print(fb)

输出:

{‘k1‘: 1, ‘k2‘: 2}

如果处理的不是文件,可以使用pickle.dumps和pickle.loads,例如:

data = {‘name‘:‘JieSen‘,‘height‘:175,‘weight‘:‘68KG‘}
#转换为一个字节流对象
pickle_byte = pickle.dumps(data)
print(pickle_byte,‘格式:‘,type(pickle_byte))
#从字节流中恢复对象
pickle_dict = pickle.loads(pickle_byte)
print(pickle_dict,‘格式:‘,type(pickle_dict))

输出:

b‘\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x06\x00\x00\x00JieSenq\x02X\x06\x00\x00\x00heightq\x03K\xafX\x06\x00\x00\x00weightq\x04X\x04\x00\x00\x0068KGq\x05u.‘ 格式: <class ‘bytes‘>
{‘name‘: ‘JieSen‘, ‘height‘: 175, ‘weight‘: ‘68KG‘} 格式: <class ‘dict‘>

 总结:

1.pickle序列化的是字节,而json序列化的是字符。

2.json.dump,json.load和pickle.dump,pickle.road处理的都是文件。

时间: 2024-07-28 13:36:33

days-json和pickle序列化的相关文章

Python的json and pickle序列化

json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = { "name":"test", "age":"20", } #json序列化 with open("json_test","w",encoding="utf-8") a

Python之路-json和pickle序列化/反序列化

首先引入json模块 序列化:使用json的dumps方法 反序列化:使用json的loads方法 过程:在json序列化后就可以将序列化的数据类型写入文件,然后在从文件中读出该数据类型,然后在进行反序列化 json对象中的其他的方法:dump(info,f)>>>其中Info是需要序列化的数据,f是一个文件句柄:load(f)>>>使用这两个方法不要在对文件进行读写 pickle和json使用方法类似,只是名字不同且pickle可以处理复杂数据类型而json不能(pi

python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,在python中.一个.py文件就称为一个模块(Module) 使用模块的好处: 提高了代码的可维护性. 其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们编写程序的时候也经常引用其他模块,包括python的内置的模块和第三方模块. 包(package

序列化的两个模块(json和pickle)

到底什么是序列化(picking)呢? 我们把变量从内存中变成可存储或传输的过程称之为序列化 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling json和pickle json和pickle模块,两个都是用于序列化的模块 json #json 是通用的,可以在各种语言里进行交互,只是一个简单的序列化方法#json把python对象转化成字符串,仅限于简单的数据类型,例如列表,字典,元组

Python序列化之json与pickle

1.json介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等

json&amp;pickle序列化

一.用途 我们需要将内存中的数据进行序列化,即写入文件中时,写入的类型只能是字符串或者二进制类型.但是如果我们想要将复杂一些的数据类型,如:列表.字典或者函数之类的同样进行序列化,我们就要用到 json或者pickle. 二.json序列化 1.dumps序列化和loads反序列化 dumps把数据类型转换成字符串 import json info = { 'name': 'The Count of Monte Cristo', 'type': 'Movie' } data = json.dum

python序列化模块json和pickle

序列化相关 1. json 应用场景: json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转化为json格式的数据,便于跨平台或跨语言进行数据交互 功能: Json模块提供了四个功能:dumps.dump.loads.load Python 编码为 JSON 类型转换对应表: Python JSON dict object list, tuple array str string int,

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

常用模块一(os模块、序列化模块(json,pickle))

一.os模块 os模块是与操作系统交互的一个接口. import os # 和文件和文件夹的操作有关 os.makedirs('dirname1/dirname2') # 可生成多层递归目录 os.removedirs('dirname1') # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') # 生成单级目录:相当于shell中mkdir dirname os.rmdir('dirname') # 删除单级空目录,若目录不为空则无法

python 模块 - 序列化 json 和 pickle

1,引入 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值. import json x = "[nuaa,true,dalse,1]" # print(eval(x)) # 报错,无法解析null类型,而json就可以 print(json.dumps(x)) #