Python3 pickle模块的使用方法详细介绍
pickle
模块是Python提供的一种对象序列化和反序列化的工具,能够将Python对象转换为一个可以存储到磁盘上或者进行网络传输的字符串,同时也能够将这个字符串反序列化为原来的Python对象。使用pickle
模块可以方便地实现数据的持久化和传输,是Python编程中非常重要的一部分。
序列化和反序列化
Pickle模块的主要作用是提供两个函数:dump
和load
。dump
将Python对象序列化成字符串,并将这个字符串写入文件;load
从文件中读取数据,并将这些数据反序列化为Python对象。
序列化
我们可以使用pickle.dump(obj, file, protocol=None, *, fix_imports=True)
函数将Python对象进行序列化,并将数据写入文件中。
其中,obj
表示需要序列化的对象;file
表示文件对象,可以是打开的文件或者网络连接,也可以使用io.BytesIO
以及io.StringIO
等进行序列化;protocol
表示序列化使用的协议版本号,可以省略。
示例代码如下:
import pickle
data = {
'name': 'Tom',
'age': 18,
'gender': 'male'
}
with open('data.pkl', 'wb') as f:
pickle.dump(data, f)
反序列化
我们可以使用pickle.load(file, *, fix_imports=True, encoding="ASCII", errors="strict")
函数从文件中读取数据,并将这些数据反序列化为Python对象。
其中,file
表示文件对象。
示例代码如下:
import pickle
with open('data.pkl', 'rb') as f:
data = pickle.load(f)
print(data)
使用示例
序列化和反序列化Python对象
import pickle
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f'Student(name={self.name}, age={self.age})'
alice = Student('Alice', 18)
bob = Student('Bob', 20)
# 序列化
with open('students.pkl', 'wb') as f:
pickle.dump([alice, bob], f)
# 反序列化
with open('students.pkl', 'rb') as f:
students = pickle.load(f)
print(students)
使用IO流进行序列化和反序列化
import pickle
import io
data = {
'name': 'Tom',
'age': 18,
'gender': 'male'
}
# 序列化
buf = io.BytesIO()
pickle.dump(data, buf)
serialized_data = buf.getvalue()
# 反序列化
buf = io.BytesIO(serialized_data)
deserialized_data = pickle.load(buf)
print(deserialized_data)
以上就是Python3 pickle模块的使用方法详细介绍
的攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3 pickle模块的使用方法详细介绍 - Python技术站