pickle 是 Python 库中的一个模块,用于将 Python 对象序列化和反序列化。pickle 可以将对象序列化为字符串或字节序列,以便在互联网上传输或保存到文件中。
pickle 是一个很有用的工具,可以将 Python 对象转换为可序列化的字符串或字节序列,然后将这类数据保存到文件中或在互联网上传输。这在多个范围中都很有用,尤其是在缓存、配置和持久化等范围。pickle 可以处置大部分 Python 对象,包含基本数据种类、字典、列表、元组、集合、用户自概念类和实例等。
用 pickle,可以轻松地将一个 Python 对象序列化为字节流:
importpickledata=[1,2,3,4,5]#序列化对象pickled_data=pickle.dumps(data)print(pickled_data)
输出结果为:
b/x80/x04/x95/x0f/x00/x00/x00/x00/x00/x00/x00]/x94(K/x01K/x02K/x03K/x04K/x05e.
反序列化:
unpickled_data=pickle.loads(pickled_data)print(unpickled_data)
输出结果为:
[1, 2, 3, 4, 5]
注意:pickle 序列化的对象是二进制数据,所以在打印输出时需要用字节串前缀 b。
pickle 还有不少其他功能,譬如用 dump() 和 load() 将数据序列化和反序列化到文件中,用 Protocol 参数控制序列化的版本,用 HIGHEST_PROTOCOL 指定最高版本的序列化协议等。应该注意的是,pickle 可能存在一些安全问题,由于它可以反序列化任意 Python 代码。因此,建议只从受信赖的源中反序列化 pickle 数据。
pickle 是 Python 标准库中的一个序列化模块,它可以将 Python 对象转换成字节流,以便将它们保存到文件或将它们在互联网上传输。
pickle 可以处置大部分 Python 对象,包含基本数据种类、复杂数据种类和用户自概念类的实例。pickle 可以达成序列化和反序列化,将一个对象转换成字节流即序列化,将一个字节流转换成对象即反序列化。pickle 的主要应用包含:缓存、配置和持久化等范围。
举例,假设大家有一个 Python 的字典,大家想要将它持久化到文件中或者将它传输到互联网中,可以用 pickle 包来达成:
importpickle#概念一个字典person={name:Alice,age:28,gender:Female}#将字典对象序列化为字节流bytes_person=pickle.dumps(person)#将字节流反序列化为对象new_person=pickle.loads(bytes_person)print(person)#{name:Alice,age:28,gender:Female}print(new_person)#{name:Alice,age:28,gender:Female}
输出结果为:
{name: Alice, age: 28, gender: Female}
{name: Alice, age: 28, gender: Female}
大家再来一个更实质的例子。假设大家有一个机器学习模型,大家期望将该模型保存到文件中,并在需要的时候重新加载该模型,以便进行预测。大家可以用 pickle 包来达成模型的序列化和反序列化。
importpickleimportnumpyasnpfromsklearn.linear_modelimportLogisticRegression#生成一些随机数据X=np.random.rand(100,5)y=np.random.randint(0,2,(100,))#实例化一个逻辑回归模型clf=LogisticRegression()#拟合模型clf.fit(X,y)#将模型序列化为字节流bytes_model=pickle.dumps(clf)#将字节流反序列化为模型对象new_clf=pickle.loads(bytes_model)#对新数据进行预测new_X=np.random.rand(10,5)new_y_pred=new_clf.predict(new_X)print(new_y_pred)
输出结果为:
[1 1 0 1 0 1 1 0 1 1]




![Google扩展程序推荐:最好用的新标签页工具[多图] Google Chrome 浏览器新标签页快捷方法](https://www.zmtpc.com/d/file/p/2023/09-24/ba410b548a972bca4b02bdd6f91da4bc.jpg)
