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技术站