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基本数据类型之字符串str

    Python基本数据类型之字符串str 字符串是Python编程中使用频率非常高的一种数据类型,可以存储字符、数字、符号等各种类型的数据。 字符串的定义 字符串可以使用单引号或双引号来定义,且两种方式是等效的。 str1 = ‘hello’ str2 = "world" print(str1, str2) 输出结果为: hello wor…

    python 2023年6月5日
    00
  • 利用python获取当前日期前后N天或N月日期的方法示例

    获取当前日期前后N天或N月日期的方法在Python中非常简单,我们可以使用标准库中的datetime模块来实现。下面是一些例子: 获取当前日期 如果需要获取当前日期,我们可以使用datetime.date.today()函数。 import datetime today = datetime.date.today() print(today) 运行以上代码,…

    python 2023年6月2日
    00
  • Python HTMLTestRunner测试报告view按钮失效解决方案

    现在我将为您详细讲解如何解决”Python HTMLTestRunner测试报告view按钮失效”的问题,并提供两条示例说明。 一、问题描述 在使用Python编写脚本进行自动化测试的过程中,我们通常会使用HTMLTestRunner生成测试报告,方便我们对测试结果进行分析和管理。但是,在使用Python HTMLTestRunner生成的测试报告中,有时会…

    python 2023年5月31日
    00
  • 在Python中声明私有变量[重复]

    【问题标题】:Declaring private variable in Python [duplicate]在Python中声明私有变量[重复] 【发布时间】:2023-04-02 12:45:01 【问题描述】: 我正在Python 中编写一个银行应用程序,并从这里Banking Application 读取一些源代码。 balance 类定义如下: c…

    Python开发 2023年4月8日
    00
  • Python处理CSV与List的转换方法

    Python处理CSV与List的转换方法 在Python中,我们可以使用csv模块来处理CSV文件,并将CSV文件转换为List。本文将详细讲解Python处理CSV与List的转换方法,包括读取文件、CSV文件转换List、将List转换为CSV文件等方的内容,并给出两个示例说明。 读取CSV文件 在Python中,我们可以使用csv模块的reader(…

    python 2023年5月13日
    00
  • 如何使用Python中的正则表达式处理html文件

    让我们来详细讲解一下“如何使用Python中的正则表达式处理html文件”的完整攻略。 1. 使用正则表达式匹配HTML标签 使用正则表达式可以轻松地匹配HTML标签。例如,在下面的HTML文本中查找所有的<a>标签: <html> <head> <title>Example HTML File</tit…

    python 2023年6月3日
    00
  • 浅谈Python中用datetime包进行对时间的一些操作

    浅谈Python中用datetime包进行对时间的一些操作 Python标准库中的datetime模块提供了多种处理日期和时间的工具。本文将介绍datetime模块中最常用的类和方法,以及如何使用这些类和方法进行日期和时间的格式化、计算、比较等操作。 datetime类 datetime类是日期和时间的基础类,它包含年、月、日、时、分、秒和微秒等信息。dat…

    python 2023年6月2日
    00
  • 解决python2中unicode()函数在python3中报错的问题

    在Python 2中,unicode()函数用于将字符串转换为Unicode编码。但是,在Python 3中,unicode()函数已被移除,因为所有字符串都是Unicode编码。如果我们在Python 3中使用unicode(),将会抛出NameError异常。本攻略将介绍如何解决Python 2中unicode()函数在Python 3中报错的,并提供两…

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