本文主要详细介绍了python中cPickle类的用法,有一定的参考价值,感兴趣的朋友可以参考一下。
在python中,一般来说,Pickle类可以用来序列化python对象,而cPickle提供了更快更简单的接口,正如python文档所说:“C pickle——更快的pickle”。
CPickle可以序列化任何类型的python对象,比如list、dict,甚至是一个类的对象。所谓序列化,以我肤浅的理解,就是要完整保存,完全可逆。在cPickle中,有四个主要的函数可以完成这项工作。下面用例子来介绍一下。
1.转储:序列化python对象并将它们保存到本地文件。
导入图标
数据=范围(1000)
cPickle.dump(data,open('test\\data.pkl ',' wb '))
dump函数需要指定两个参数,第一个是要序列化的python对象名,第二个是本地文件。需要注意的是,你需要使用open函数打开一个文件,并在这里指定“写”操作。
2.加载:加载本地文件并恢复python对象。
data=c pickle . load(open(' test \ \ data . pkl ',' rb '))
就像dump一样,这里需要使用open函数打开一个本地文件,并指定“读取”操作。
3.转储:序列化python对象并将它们保存到一个字符串变量中。
data_string=cPickle.dumps(data)
4.加载:从字符串变量加载python对象。
data=cPickle.loads(data_string)
5.Pickle模块使用的数据格式是python特有的,不同版本不向后兼容,同时也不能被其他语言识别。要与其他语言交互,可以使用内置的json包。
使用pickle模块,您可以将Python对象直接保存到文件中,而无需将它们转换为字符串或将它们写入二进制文件,也无需底层的文件访问操作。Pickle模块会创建一个python语言特有的二进制格式,你基本上不用考虑任何文件细节。它会帮你干净利落地完成读写的独占操作,你唯一需要的就是一个合法的文件句柄。
pickle模块中的两个主要函数是dump()和load()。dump()函数接受文件句柄和数据对象作为参数,并将数据对象以特定的格式保存到给定的文件中。当我们使用load()函数从文件中取出保存的对象时,pickle知道如何将这些对象恢复到原始格式。
dump()函数执行与dump()函数相同的序列化。接受流对象并将序列化数据保存到磁盘文件中。这个函数只是返回序列化的数据。
loads()函数执行与load()函数相同的反序列化。代替流对象并转到文件以读取序列化数据。它接受包含序列化数据的str对象,并直接返回该对象。
CPickle是C语言中Pickle的一个更快的编译版本。
Pickle和cPickle相当于java序列化和反序列化操作。
#!/usr/local/env python
# -*-编码=utf-8 -*-
if __name__=='__main__ ':
导入图标
#序列化到文件
obj=123,' abcdedf ',['ac ',123],{'key':'value ',' key1':'value1'}
打印对象
# Output: (123,' abcedf ',['AC ',123],{'key1':' value1 ',' key':' value'})
#r读写权限r b读写二进制文件
f=打开(r'd:\a.txt ',' r ')
cPickle.dump(obj,f)
f.close()
f=打开(r'd:\a.txt ')
打印cPickle.load(f)
# Output: (123,' abcedf ',['AC ',123],{'key1':' value1 ',' key':' value'})
#序列化到内存中(以字符串格式保存),然后可以用任何方式处理对象,比如通过网络传输。
obj1=cPickle.dumps(obj)
打印类型(obj1)
# output:键入“str”
打印obj1
#输出:特定于python的存储格式
obj2=cPickle.loads(obj1)
打印类型(obj2)
# output:类型“tuple”
打印对象2
# Output: (123,' abcedf ',['AC ',123],{'key1':' value1 ',' key':' value'})
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。