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

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抛出引发异常(raise)知识点总结

    Python抛出引发异常(raise)知识点总结 在Python中,我们可以使用raise语句来抛出异常。raise语句用于引发异常,可以手动触发异常的抛出。本文将介绍Python中raise语句使用方法,包括如何抛出异常、如何自定义异常等。 抛出异常 在Python中,我们可以使用raise语句来抛出异常。raise语句可以接收一个异常类或异常实例作为参数…

    python 2023年5月14日
    00
  • 如何在 Python 中使用 Selenium 设置动态显式等待?

    【问题标题】:How can I set a dynamic explicit wait using Selenium in Python?如何在 Python 中使用 Selenium 设置动态显式等待? 【发布时间】:2023-04-05 11:02:01 【问题描述】: 我几天前构建的一个程序在这里遇到了一点问题,所以我将非常简单地解释它: 我正在使用…

    Python开发 2023年4月5日
    00
  • 基于python+selenium的二次封装的实现

    下面是基于python+selenium的二次封装的实现攻略: 一、什么是基于python+selenium的二次封装 基于python+selenium的二次封装是指在selenium的基础上,利用python语言的特性进行封装,以便于自己或他人在后续的测试过程中更加高效地使用selenium。 二、为什么要进行二次封装 基于Python+selenium…

    python 2023年6月3日
    00
  • Python 实现一行输入多个数字(用空格隔开)

    要实现一行输入多个数字(用空格隔开),可以使用Python中的split函数来将输入的字符串按照空格分割成一个列表,然后再将列表中的每个数字转换为整数或浮点数。 下面是Python实现一行输入多个数字的示例代码: # 输入多个整数时示例 nums = input("请输入多个整数,用空格隔开:").split() nums = [int(…

    python 2023年6月6日
    00
  • python使用百度文字识别功能方法详解

    Python使用百度文字识别功能方法详解 在这篇文章中,我将详细讲解如何使用百度AI提供的文字识别功能,来实现将图片中的文字信息提取出来并转化成可用的文本数据。 准备工作 在开始使用百度文字识别功能之前,你需要先申请一个百度开发者账号,并创建一个文字识别应用(即创建一个应用,并获取该应用的 APP_ID、API_KEY 和 SECRET_KEY 参数)。 安…

    python 2023年5月18日
    00
  • 如何使用Python发送HTML格式的邮件

    使用Python发送HTML格式的邮件可以让邮件内容更加丰富和美观。Python提供了smtplib和email库,可以轻松地发送HTML格式的邮件。以下是详细讲解如何使用Python发送HTML格式的邮件,包含两个示例。 示例1:发送简单的HTML邮件 以下是一个示例,可以使用Python发送简单的HTML邮件: import smtplib from e…

    python 2023年5月15日
    00
  • 使用批处理for命令清除事件查看器所有Windows EventLog日志

    清除事件查看器所有Windows EventLog日志需要使用批处理for命令,下面是完整攻略: 步骤一:打开命令提示符窗口 按下Win+R快捷键,打开运行对话框,输入cmd并按下Enter键,打开命令提示符窗口。 步骤二:输入for命令清除Windows EventLog日志 输入以下命令: for /f "tokens=*" %1 i…

    python 2023年6月13日
    00
  • Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】

    这篇攻略是针对使用Python3实现基于爬虫爬取赶集网列表功能,包含如下几个步骤: 步骤一:请求赶集网数据 首先需要安装Python中的requests模块,使用requests.get()方法请求赶集网的数据,代码示例如下: import requests response = requests.get(‘https://bj.ganji.com/zuli…

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