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中下划线的使用方法

    Python语言中使用下划线有以下几方面的用途: 1. 表示变量的私有性 在Python中,不存在真正的私有变量(private)或者私有方法(method),但是可以用下划线作为类属性或者方法的前缀来表示该属性或方法不应该被外部直接访问或使用。 class MyClass: def __init__(self): self.public_var = &qu…

    python 2023年6月5日
    00
  • 如何使用Python实现数据库中数据的全文检索?

    以下是使用Python实现数据库中数据的全文检索的完整攻略。 数据库中数据的全文检索简介 在数据库中,全文检索是指根据关键字检索查询。在Python中,可以使用pymysql连接到MySQL数据库,并使用SELECT语句实现全文检索。 步骤1:连接数据库 在Python中,可以使用pymysql连接MySQL数据库。以下是连接到MySQL的基本语法: imp…

    python 2023年5月12日
    00
  • 搞清楚 Python traceback的具体使用方法

    当 Python 解释器遇到一个错误时,它会生成一个 traceback(回溯跟踪信息)对象,并打印到标准错误流中。Traceback 中包括了调用堆栈、错误类型和一些相关信息,以帮助程序员定位错误。在本篇攻略中,我们将探讨 Python traceback 的具体使用方法。 查看 traceback 要查看 traceback,最简单的方法是让 Pytho…

    python 2023年5月13日
    00
  • shell命令行,一键创建 python 模板文件脚本方法

    下面是关于“shell命令行,一键创建python模板文件脚本方法”的完整攻略: 1. 什么是Shell命令行? Shell命令行是一个在操作系统上输入、传递和操作命令的工具。在Linux和macOS 等 Unix-like 系统上,这种工具被称为“终端”,在Windows下则被称为“命令提示符”或“PowerShell”。 2. 为什么要用Shell命令行…

    python 2023年6月3日
    00
  • Python中pip工具的安装以及使用

    Python 中 pip 工具的安装以及使用 在 Python 程序开发中,我们通常需要引入一些第三方的包来快速实现某些功能,比如请求网络、数据解析、可视化等等。Pip 是 Python 中一个常用的包管理工具,本文将详细介绍 Pip 工具的安装以及使用方法。 1. 安装 Pip 工具 在大部分情况下,Python 中已经包含了 pip 工具,因此我们可以直…

    python 2023年5月14日
    00
  • Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】

    Python面向对象编程(OOP)是Python编程的重要方面,允许开发人员以一种更为灵活和模块化的方式组织代码。这里给出了一些关于Python OOP的深入分析,主要涉及构造函数、组合类、工具类等方面。 构造函数 构造函数是一种特殊的函数,用于创建和初始化类的实例。在Python中,构造函数使用__init__()定义。每当创建类的一个新实例时,都会自动调…

    python 2023年6月2日
    00
  • Python与C++中梯度方向直方图的实现

    关于“Python与C++中梯度方向直方图的实现”的完整攻略,我将从以下几方面进行详细讲解: 什么是梯度方向直方图 Python中的梯度方向直方图实现 C++中的梯度方向直方图实现 两个示例:人脸识别和图像分类 什么是梯度方向直方图 梯度方向直方图(Histogram of Oriented Gradient,HOG)是一种常用于图像处理、计算机视觉中的特征…

    python 2023年5月18日
    00
  • Python入门之字典的使用教程

    Python入门之字典的使用教程 什么是字典 字典(dictionary)是Python中的一种无序的键值对集合,是一种非常常用的数据类型。字典中的键(key)必须唯一且不可改变,而值(value)可以是任意类型的数据。在字典中,通过键来访问值,因此字典也被称为关联数组或哈希表。 字典的基本用法 创建字典 我们可以通过以下方式创建一个字典: # 创建一个空字…

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