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

yizhihongxing

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 开发工具PyCharm安装教程图文详解(新手必看)

    Python 开发工具PyCharm安装教程图文详解(新手必看) PyCharm是 JetBrains公司开发的Python开发工具,是Python官方推荐的开发工具之一,具有可视化调试,代码自动补全,智能提示等功能。本文将会详细介绍PyCharm的安装步骤,以及使用PyCharm创建项目和运行Python文件的方法。 第一步:下载并安装PyCharm 首先…

    python 2023年5月30日
    00
  • 如何使用Python进行网络安全攻防?

    使用Python进行网络安全攻防一般可以分为以下几个步骤: 1.网络数据收集 在进行网络安全攻防前,我们需要先进行网络数据收集,包括获取目标主机的IP地址、开放端口、操作系统信息及目标主机的漏洞信息等等。Python中可以使用nmap、pymssql等工具库对网络数据进行收集和分析,例如以下的代码片段: # 导入nmap库 import nmap # 创建n…

    python 2023年4月19日
    00
  • 分享4个方便且好用的Python自动化脚本

    Python自动化脚本是指使用Python编写的一些脚本,可以自动化完成一些重复性的任务,提高工作效率。本文将分享4个方便且好用的Python自动化脚本,包括以下几个方面: 安装Python 安装第三方库 示例1:自动备份MySQL数据库 示例2:自动下载图片 示例3:自动发送邮件 示例4:自动填写表单 安装Python 在使用Python自动化脚本之前,需…

    python 2023年5月15日
    00
  • 浅谈Python中的zip()与*zip()函数详解

    浅谈Python中的zip()与*zip()函数详解 简介 zip() 和 *zip() 函数是 Python 中常用的内置函数,它们能够帮助我们处理多个序列(例如列表、元组等)数据,将它们以每个序列的相同索引处的元素为基准,打包成一个元组,并返回由这些元组组成的新的序列。这两个函数的使用方法和效果类似,但是在参数的传递方式上存在区别。 zip() 函数 z…

    python 2023年5月14日
    00
  • 十个Python经典小游戏的代码合集

    首先,感谢您对“十个Python经典小游戏的代码合集”感兴趣。该合集收录了十个Python经典小游戏的完整源代码,您可以通过学习这些代码来提高自己的编程能力,为写出更好的Python程序打下基础。 在该合集中,每个游戏都有对应的.py文件,您可以直接打开并运行这些文件来玩一玩这些小游戏,或者阅读源代码并了解其中的实现细节。以下是详细的攻略: 下载和安装 您可…

    python 2023年5月19日
    00
  • 上手简单,功能强大的Python爬虫框架——feapder

    Feapder是一款使用Python语言编写的爬虫框架。它具有上手简单、功能强大的特点,可以帮助爬虫程序员快速开发出高效、稳定的爬虫程序。以下是使用Feapder编写爬虫的攻略: 安装 Feapder的安装非常简单,使用以下命令即可: pip install feapder 特点 Feapder具有以下特点: 简单易用,只需定义爬虫任务、配置爬虫参数,可以快…

    python 2023年5月14日
    00
  • Python学习之集合set

    关于Python集合(set)的学习攻略,我会从以下几个方面进行全面讲解: 集合的定义和常见操作 集合的创建方式和常见使用场景 集合的高级操作和其它相关内容 1. 集合的定义和常见操作 集合是Python中的一个数据类型,它是由一组元素组成的无序、不重复的集合。集合可以进行的常见操作有: 添加元素:利用add()函数向集合中添加元素 删除元素:利用remov…

    python 2023年5月13日
    00
  • 如何在Python中更新Microsoft SQL Server数据库中的数据?

    以下是如何在Python中更新Microsoft SQL Server数据库中的数据的完整使用攻略,包括连接Microsoft SQL Server数据库、执行更新语句等步骤。同时,提供了两个示例以便更好理解如何在Python中更新Microsoft SQL Server数据库中的数据。 步骤1:连接Microsoft SQL Server数据库 在Pyth…

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