python数据持久存储 pickle模块的基本使用方法解析

yizhihongxing

Python数据持久存储 pickle模块的基本使用方法解析

什么是pickle

pickle是Python标准库中提供的一个序列化和反序列化的模块,可以将python对象(包括可序列化的数据类型和用户自定义的类对象等)序列化成一个字节流,也可以将一个字节流反序列化还原成原对象。

pickle的主要作用是提供一种持久化存储Python对象的方式,将数据写入到磁盘上,再次使用时可以从文件中读取出来,实现数据的持久化存储。对于需要短时间存储的数据,可以使用Python内置的shelve模块。

基本使用方法

序列化

将Python对象转化为字节流,实现序列化需要使用pickle模块的dump()或dumps()方法。dump()方法将序列化的数据写入文件中,dumps()方法返回一个序列化后对象的bytes流。

import pickle
info = {"name": "Tom", "age": 21}
with open("info.pkl", "wb") as f:
    pickle.dump(info, f)

反序列化

将从文件中读取的数据反序列化为Python对象,使用pickle的load()或loads()方法,load()方法从文件中读取反序列化后的对象,loads()方法传入一个bytes流并返回反序列化后的对象。

import pickle
with open("info.pkl", "rb") as f:
    data = pickle.load(f)
print(data)

示例

示例1:序列化和反序列化一个自定义的类

import pickle

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"My name is {self.name}, and I'm {self.age} years old.")

person = Person("Tom", 21)

# 序列化
with open("person.pkl", "wb") as f:
    pickle.dump(person, f)

# 反序列化
with open("person.pkl", "rb") as f:
    data = pickle.load(f)

data.say_hello() # My name is Tom, and I'm 21 years old.

示例2:序列化和反序列化一个列表

import pickle

li = [1, 2, 3, 4, 5]

# 序列化
with open("list.pkl", "wb") as f:
    pickle.dump(li, f)

# 反序列化
with open("list.pkl", "rb") as f:
    data = pickle.load(f)

print(data) # [1, 2, 3, 4, 5]

总结

Python的pickle模块提供了一种序列化和反序列化Python对象的方式,可以将对象转化为字节流,再从字节流中还原成原对象,实现数据的持久化存储。在实际的Python程序中,对于需要长时间使用的数据或需要在多个程序之间共享的数据可以使用pickle模块进行存储。但需要注意的是,pickle只能用于Python环境内部,不能用于与其他语言或外部系统进行交互,这时需要使用其它的数据序列化方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据持久存储 pickle模块的基本使用方法解析 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Python实现的递归神经网络简单示例

    以下是关于“Python实现的递归神经网络简单示例”的完整攻略: 简介 递归神经网络(RNN)是一种神经网络,它可以处理序列数据,例如时间序列或文本。RNN中的神经元可以接收来自前一时间步的输入,并将其传递到下一时间步。Python提供了多种库来实现RNN,包括TensorFlow和PyTorch。本教程将介绍如何使用Python和PyTorch实现一个简单…

    python 2023年5月14日
    00
  • Python 命名元组收集数据

    接下来我将详细讲解Python命名元组收集数据使用方法的完整攻略。 Python命名元组收集数据使用方法 什么是命名元组? 命名元组(namedtuple)是一个很棒的Python内置数据结构,它将普通的元组打上了一个简单易懂的名字。它具有元组的不变性 (immutable) 和序列的可访问性,同时每个元素又有自己的名称 (name),可以像对象属性一样进行…

    python-answer 2023年3月25日
    00
  • python3基础之集合set详解

    Python3基础之集合Set详解 1. 什么是集合? 在Python中,集合(set)是一种无序且拥有唯一元素的数据类型。它的元素不能重复。 集合是由大括号{}或set()函数来创建的。 例如: >>> s = {1, 2, 3} >>> type(s) <class ‘set’> >>> …

    python 2023年5月13日
    00
  • Python实战之实现简易的学生选课系统

    Python实战之实现简易的学生选课系统攻略 简介 学生选课系统是学生和教师必备的工具之一,本文将介绍如何使用Python实现一个简易的学生选课系统。 系统功能 该系统包含以下功能: 学生注册 学生登录 学生选课 学生退课 教师添加课程 教师删除课程 教师查看选课情况 实现步骤 1. 创建学生和课程的列表 使用Python的列表数据结构来存储学生和课程的信息…

    python 2023年5月19日
    00
  • Python利用prettytable实现格式化输出内容

    当我们需要向终端输出一些数据时,通常使用Python内置的print()函数。但是当数据量很大时,输出的数据可能会显得杂乱无章,不便于阅读和理解。这时我们可以使用prettytable库来对输出内容进行格式化处理,以便更好地展示数据。 1. prettytable库的安装 在命令行中输入以下命令即可安装prettytable库: pip install pr…

    python 2023年6月5日
    00
  • Python语言基础之函数语法

    Python语言基础之函数语法 函数是一段可重复利用的代码,可以使代码更加简洁、易读和易维护。 定义函数 在Python中,我们可以使用def关键字来定义一个函数,具体语法如下: def 函数名(参数列表): 函数体 其中,参数列表可以有多个参数,也可以没有参数;函数体内是函数要执行的代码,可以有多行代码。 函数的定义可以放在程序的任意位置,比如,在脚本的开…

    python 2023年6月5日
    00
  • Python实战之生成有关联单选问卷

    以下是“Python实战之生成有关联单选问卷”的完整攻略: 1. 确定需求 首先,我们需要确定问卷的需求,例如问卷含有哪些问题,问题的类型是什么,每个选项的数值是多少等等。在本次实战中,我们将使用单选问卷作为例子。 2. 搭建程序框架 接下来,我们需要搭建程序的框架。在这个过程中,我们需要使用Python的Flask框架,来实现网页的生成和交互功能。 3. …

    python 2023年6月3日
    00
  • 简单了解python的一些位运算技巧

    简单了解Python的一些位运算技巧 Python中的位运算是一种对二进制数进行操作的技术,可以用于优化代码和解决一些特定的问题。本文将介绍Python中的位运算及其用法,并提供两个示例说明。 位运算符 Python中的位运算包括以下几种: &位与 | 按位或 ^ 按位异或 ~ 按位取反 << 左移 >> 右移 这些运算符可以…

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