1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

Python怎么实现数据的序列化操作?下面给大家做一个解答

Python数据序列化操作

大家好,我是本际云服务器推荐网的小编小本本。今天要给大家讲解的是关于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