Python数据序列化操作
大家好,我是本际云服务器推荐网的小编小本本。今天要给大家讲解的是关于Python数据序列化的一些技能,主要涉及到相关的数据操作。那么,怎么样才能够实现序列化的一些操作呢?下面就让我来为大家详细解答。

Json与Pickle模块
在日常开发中,Python提供了两个模块方便开发者实现数据的序列化操作,即json模块和pickle模块。这两个模块的主要区别如下:
- json是一个文本序列化格式,而pickle是一个二进制序列化格式;
- json可以直观阅读,而pickle不行;
- json是可互操作的,在Python系统之外广泛使用,而pickle则是Python专用的;
- 默认情况下,json只能表示Python内置类型的子集,不能表示自定义的类;但pickle可以表示大量的Python数据类型。
Json模块
Json是一种轻量级的数据交换格式,它具有传输数据量小、数据格式易解析等特点,被广泛应用于各系统之间的交互操作。Json模块包含多个常用函数,具体如下:
dumps()函数
dumps()函数可以将Python对象编码成Json字符串,例如:
import json
d = {'小明':{'sex':'男','addr':'上海','age':26},'小红':{'sex':'女','addr':'上海','age':24}}
print(json.dumps(d,ensure_ascii=False,indent=4))
执行结果:
{
"小明":{
"sex":"男",
"addr":"上海",
"age":26
},
"小红":{
"sex":"女",
"addr":"上海",
"age":24
}
}
dump()函数
dump()函数可以将Python对象编码成json字符串,自动写入到文件中,不需要再多带带写文件。例如:
import json
d = {'小明':{'sex':'男','addr':'上海','age':26},'小红':{'sex':'女','addr':'上海','age':24}}
with open('users.json','w',encoding='utf-8') as fw:
json.dump(d,fw,ensure_ascii=False,indent=4)
loads()函数
loads()函数可以将json字符串转换成Python的数据类型,例如:
import json
f = open('users.json','r',encoding='utf-8')
res = f.read()
print(json.loads(res))
执行结果:
{'小明':{'sex':'男','addr':'上海','age':26},'小红':{'sex':'女','addr':'上海','age':24}}
load()函数
load()函数可以将json字符串转换成Python数据类型,不同的是前者的参数是一个文件对象,不需要再多带带读此文件。例如:
import json
f = open('users.json','r',encoding='utf-8')
print(json.load(f))
执行结果:
{'小明':{'sex':'男','addr':'上海','age':26},'小红':{'sex':'女','addr':'上海','age':24}}
Pickle模块
Pickle模块与Json模块功能相似,也包含四个函数,即dump()、dumps()、loads()和load()。它们的主要区别如下:
- dumps和dump的区别在于前者是将对象序列化,而后者是将对象序列化并保存到文件中。
- loads和load的区别在于前者是将序列化的字符串反序列化,而后者是将序列化的字符串从文件读取并反序列化。
dumps()函数
dumps()函数可以将数据通过特殊的形式转换为只有python语言认识的字符串,例如:
import pickle
data = ['A','B','C','D']
print(pickle.dumps(data))
执行结果:
b'x80x03]qx00(Xx01x00x00x00Aqx01Xx01x00x00x00Bqx02Xx01x00x00x00Cqx03Xx01x00x00x00Dqx04e.'
dump()函数
dump()函数可以将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件。例如:
import pickle
data = ['A','B','C','D']
with open('test.txt','wb') as f:
pickle.dump(data,f)
print('写入成功')
执行结果:
写入成功
loads()函数
loads()函数可以将pickle数据转换为python的数据结构,例如:
msg = pickle.loads(datastr)
print(msg)
执行结果:
['A','B','C','D']
load()函数
load()函数可以从数据文件中读取数据,并转换为python的数据结构,例如:
with open('test.txt','rb') as f:
data = pickle.load(f)
print(data)
执行结果:
['A','B','C','D']
至此,我已经为大家详细介绍完毕关于Python数据序列化操作的相关知识和技能,希望可以帮助大家更好地进行数据交互和操作。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7223.html
