Python文件的应用之序列化与反序列化详解

Python文件的应用之序列化与反序列化详解

什么是序列化?

序列化(Serialization)是指将对象的状态转换为可以存储或传输的形式的过程,通常将对象序列化为字节流或文本流的形式。在将对象传输或存储的时候,需要对其进行序列化,以便于传输或保存到磁盘中。在 Python 中,序列化的实现通常采用 pickle 模块。

序列化的基本使用

将对象序列化为字节流

下面是一个将 Python 对象序列化为字节流的简单示例:

import pickle

# 定义一个简单的数据结构
user_info = {
    'name': '张三',
    'age': 25,
    'gender': 'male'
}

# 将 Python 对象 user_info 序列化为字节流
user_info_bytes = pickle.dumps(user_info)
print(user_info_bytes)

将上述代码保存到 Python 代码文件中,例如文件名为 serialize_demo.py,然后在命令行中运行 python3 serialize_demo.py,可以看到以下输出结果:

b'\x80\x04\x95\x1b\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x06\xe5\xbc\xa0\xe4\xb8\x89\x94\x8c\x03age\x94K)\x8c\x06gender\x94\x8c\x04male\x94ub.'

其中,b'' 表示字节串类型,\x 表示一个 16 进制字符,这就是字节流的形式。

将对象序列化为文本流

将 Python 对象序列化为文本流,也就是将序列化后的字节流进行 base64 编码,如下示例所示:

import pickle
import base64

# 定义一个简单的数据结构
user_info = {
    'name': '张三',
    'age': 25,
    'gender': 'male'
}

# 将 Python 对象 user_info 序列化为文本流
user_info_str = base64.b64encode(pickle.dumps(user_info)).decode('utf-8')
print(user_info_str)

运行上述代码,输出结果如下:

gASVcQAAAAAAAAB9lE0KUXRyYWNlSW5mb3JtAAjaB1gAX11VA2phZGVzYQpxA2dlbmRlcgpxA3RpdGxlcQNVbmFtZQRyzgX/////OM17hnEGHc1LgX//////////8=",

反序列化的基本使用

将字节流反序列化为 Python 对象

下面是一个将字节流反序列化为 Python 对象的简单示例:

import pickle

# 定义一个简单的数据结构
user_info = {
    'name': '张三',
    'age': 25,
    'gender': 'male'
}

# 将 Python 对象 user_info 序列化为字节流
user_info_bytes = pickle.dumps(user_info)

# 将字节流反序列化为 Python 对象
user_info_obj = pickle.loads(user_info_bytes)
print(user_info_obj)

运行上述代码,输出结果如下:

{'name': '张三', 'age': 25, 'gender': 'male'}

将文本流反序列化为 Python 对象

将文本流反序列化为 Python 对象,也就是将序列化后的 base64 编码解码为字节流,然后对其进行反序列化,如下示例所示:

import pickle
import base64

# 定义一个简单的数据结构
user_info = {
    'name': '张三',
    'age': 25,
    'gender': 'male'
}

# 将 Python 对象 user_info 序列化为文本流
user_info_str = base64.b64encode(pickle.dumps(user_info)).decode('utf-8')

# 将文本流反序列化为 Python 对象
user_info_obj = pickle.loads(base64.b64decode(user_info_str.encode('utf-8')))
print(user_info_obj)

运行上述代码,输出结果如下:

{'name': '张三', 'age': 25, 'gender': 'male'}

通过上述示例,我们可以发现序列化和反序列化都是非常简单的操作,而且在 Python 中已经有了很方便的实现方式。当我们需要传输或者存储某些对象时,很容易就可以使用 Python 的序列化工具来实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python文件的应用之序列化与反序列化详解 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 详解Python Pyside6如何准确嵌入可视化数据图表

    详解Python Pyside6如何准确嵌入可视化数据图表 前置条件 在开发Python应用程序时,我们需要使用一个GUI库与用户进行交互。此外,我们希望能够向用户显示一些数据图表,以帮助他们更好地理解数据,做出更明智的决策。在这种情况下,我们可以使用Pyside6,这是一个用于构建交互式桌面应用程序的Python库,它支持图形、音频、网络和数据库。在本攻略…

    python 2023年6月5日
    00
  • Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题

    下面详细讲解Django生成PDF文档并显示在网页上以及解决PDF中文乱码问题的攻略。 生成PDF文档并显示在网页上 安装依赖包 首先安装必要的依赖包,包括reportlab、Pillow和django-wkhtmltopdf。这三个包可以使用pip安装,命令如下: pip install reportlab Pillow django-wkhtmltopd…

    python 2023年5月20日
    00
  • python实现QQ定时发送新年祝福信息

    1. 简介 本攻略旨在介绍如何使用Python实现QQ定时发送新年祝福信息的功能。QQ是一款广泛使用的社交软件,它的消息接口并不对开发者开放,但我们可以使用第三方库QIM的接口实现自动发送消息。Python是一种流行的编程语言,具有丰富的类库和工具,可以很好地完成这个任务。 2. 实现步骤 2.1 安装QIM库 在Python3下可以通过PIP进行安装 pi…

    python 2023年6月3日
    00
  • 详解python tkinter 图片插入问题

    本文主要介绍如何使用Python的Tkinter库插入图片,包含导入图片、缩放图片、调整图片大小以及将图片插入到Tkinter窗口等操作。 导入图片 使用PIL库(Python Imaging Library)里的Image模块,可以很简单地导入图片。 from PIL import ImageTk, Image img = Image.open(&quot…

    python 2023年6月13日
    00
  • python实现半自动化发送微信信息

    下面我将为你详细讲解“python实现半自动化发送微信信息”的完整攻略,包括以下几个步骤: 安装itchat库 扫码登录微信 获取好友列表 发送文本信息 发送图片信息 详细说明如下: 1. 安装itchat库 itchat是一个开源的微信个人号接口,使用Python调用微信从未如此简单。可以使用pip在命令行中安装,如下所示: pip install itc…

    python 2023年5月18日
    00
  • Python数据存储之XML文档和字典的互转

    在Python中,可以使用标准库中的xml.etree.ElementTree模块来处理XML文档。同时,Python中也支持字典类型的数据存储和操作,而字典又是一种类似于JSON的数据格式,非常常用。那么如何在二者之间进行转换呢?下面就是XML文档和字典相互转换的攻略。 XML转字典 使用Python的xml.etree.ElementTree模块,可以将…

    python 2023年5月13日
    00
  • 一篇文章带你了解python标准库–math模块

    一篇文章带你了解Python标准库–math模块 简介 math 模块是 Python 标准库中的一个数学模块,提供了许多数学函数,如三角函数、幂函数、对数函数等等,很多时候我们在处理数据或进行科学计算时会用到这些数学函数。本文将以实例的方式,介绍 math 模块中一些比较常用的函数。 函数 acos(x) 返回 x 的反余弦值,其中参数 x 的取值范围在…

    python 2023年5月14日
    00
  • Python实现去除列表中重复元素的方法总结【7种方法】

    下面我将详细讲解“Python实现去除列表中重复元素的方法总结【7种方法】”的完整攻略。 一、需求背景和问题描述 在 Python 编程中,经常会遇到需要从列表中删除重复元素的场景。比如,我们从数据库中获取了一个列表,但是其中可能包含重复的元素,这时候我们就需要去重。 那么问题来了,Python 中有哪些方法可以去除列表中的重复元素呢? 本篇文章将为大家总结…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部