📅  最后修改于: 2023-12-03 15:38:05.571000             🧑  作者: Mango
Pickle 是Python内置的序列化模块,它可以将Python对象(如列表、字典、函数)转换成字节流,保存到文件或转发到网络。使用 Pickle,可以在不改变对象结构的情况下将对象转化为一系列字节,可以方便地将数据存储到文件或网络中,便于后续读取和操作,是Python中非常重要的模块之一。
使用 Pickle 保存Python对象非常简单,只需要调用 dump
或 dumps
方法即可。下面分别介绍这两个方法的使用方法。
dump
dump
方法可以将Python对象保存到文件中。示例如下:
import pickle
some_var = {'name': 'Alice', 'age': 25}
# 打开文件
with open('data.pickle', 'wb') as f:
# 将对象保存到文件
pickle.dump(some_var, f)
以上代码中,我们通过 pickle.dump(some_var, f)
将 some_var
对象保存到文件 data.pickle
中。需要注意的是,在使用 dump
方法时,需要传入两个参数,第一个参数为要序列化的对象,第二个参数为打开的文件对象,必须使用二进制方式打开。
dumps
dumps
方法可以将Python对象转换成字节流。示例如下:
import pickle
some_var = {'name': 'Alice', 'age': 25}
# 将对象转化为字节流
serialized = pickle.dumps(some_var)
# ... 将字节流保存到文件或发送到网络中
以上代码中,我们通过 pickle.dumps(some_var)
将 some_var
对象转换成字节流,并将其保存到变量 serialized
中。需要注意的是,在使用 dumps
方法时,只需要传入一个参数,即要序列化的对象。
使用 Pickle 加载Python对象同样很简单,只需要调用 load
或 loads
方法即可。下面分别介绍这两个方法的使用方法。
load
load
方法可以从文件中加载Python对象。示例如下:
import pickle
# 打开文件
with open('data.pickle', 'rb') as f:
# 从文件中加载对象
some_var = pickle.load(f)
print(some_var)
以上代码中,我们通过 pickle.load(f)
从文件 data.pickle
中加载 some_var
对象,并输出其内容。需要注意的是,在使用 load
方法时,只需要传入一个参数,即打开的文件对象,必须使用二进制方式打开。
loads
loads
方法可以将字节流转换成Python对象。示例如下:
import pickle
# 加载字节流
serialized = b'\x80\x04\x95\x15\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x05Alice\x94\x8c\x03age\x94K\x19\x86\x94.'
# 将字节流转换成对象
some_var = pickle.loads(serialized)
print(some_var)
以上代码中,我们通过 pickle.loads(serialized)
将字节流 serialized
转换成 some_var
对象,并输出其内容。需要注意的是,在使用 loads
方法时,只需要传入一个参数,即要反序列化的字节流。
以上就是使用 Pickle 在Python中保存和加载变量的方法。使用 Pickle 可以方便地将Python对象序列化到文件或字节流中,并在需要时进行反序列化,是Python编程中重要的工具之一。