,,python中cPickle类使用方法详解

,,python中cPickle类使用方法详解

本文主要详细介绍了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: