`
Ydoing
  • 浏览: 100622 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

python序列化pickle

 
阅读更多

什么叫做序列化?

将内存中的对象转换为线性结构的字符串(有时也称字节流),以便存储或者传输.这种对象转换为字符串的行为通常叫做序列化.内存中的任意数据结构都可以映射为一个字符串.

序列化

函数签名

#pickle.dump(obj, file[, protocol])

首先尝试将table对象序列化写入文件dbase中,写入方式是字节形式:

table = {'a' : [1, 2, 3], 'b' : ['spam', 'egg'], 'c' : {'name' : 'Bob'}}
with open('dbase', 'wb') as ff:
    pickle.dump(table, ff)

如果我们打开这个dbase文件,可以看到如下一些看起来没意义的字符串,其实是python用内部约定的方式对table对象转换为了这种字符串.这里请注意不同版本的python序列化后的字符串可能有所不同,因此序列化适用于保存不是特别重要的数据.否则升级python版本后,反序列化会还原对象时会出现不一致的问题.

(dp0
S'a'
p1
(lp2
I1
aI2
aI3
asS'c'
p3
(dp4
S'name'
p5
S'Bob'
p6
ssS'b'
p7
(lp8
S'spam'
p9
aS'egg'
p10
as.

也可以序列化后不用写入文件,直接用pickle.dump以字符串返回:

string = pickle.dumps(table)

反序列化

函数签名:

pickle.load(file)

从dbase文件读出反序列化还原对象:

with open('dbase', 'rb') as fobj:
    table_ = pickle.load(fobj)
print table_

输出:

{'a': [1, 2, 3], 'c': {'name': 'Bob'}, 'b': ['spam', 'egg']}

从输出结果不难看出,与原来的table字典内容相同.

同样我们可以直接读入字符串反序列化:

obj = pickle.loads(string)
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    Python序列化pickle模块使用详解

    主要介绍了Python序列化pickle模块使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Python 序列化 pickle/cPickle模块使用介绍

    Python序列化的概念很简单。内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人。你会怎么做?这取决于你想要怎么保存,怎么重用,发送给谁。很多游戏允许你在退出的时候保存进度,然后你再次启动...

    Python序列化与反序列化pickle用法实例

    这篇文章主要介绍了Python序列化与反序列化pickle用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 要将Python对象作为一个文件的形式保存到磁盘,就叫...

    python3.6使用pickle序列化class的方法

    如下所示: from library.connecter.database.mongo import Op_Mongo ... 您可能感兴趣的文章:Python使用pickle模块实现序列化功能示例Python使用Pickle库实现读写序列操作示例Python序列化基础知识(json/pi

    Python使用pickle模块存储数据报错解决示例代码

    pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化, pickle序列化后的数据,可读性差,人一般无法识别。 接下来我们看下Python使用pickle模块存储数据...

    Python pickle类库介绍(对象序列化和反序列化)

    pickle模块用来实现python对象的序列化和反序列化。通常地pickle将python对象序列化为二进制流或文件。   python对象与文件之间的序列化和反序列化: 复制代码 代码如下: pickle.dump() pickle.load() 如果要实现...

    Python使用pickle进行序列化和反序列化的示例代码

    主要介绍了Python使用pickle进行序列化和反序列化,帮助大家更好的理解和使用python的pickle库,感兴趣的朋友可以了解下

    Python pickle模块实现对象序列化

    这篇文章主要介绍了Python pickle模块实现对象序列化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 作用 对Python对象进行序列化,便于存储和传输 Python...

    Python中shelve序列化与反序列化

    shelve是一个简单的数据存储方案,类似key-value数据库,可以很方便的保存python对象,其内部是通过pickle协议来实现数据序列化。shelve只有一个open()函数,这个函数用于打开指定的文件(一个持久的字典),然后...

    Python 文件处理 09_使用pickle实现序列化和反序列化_神经元记忆移植.mp4

    Python 文件处理 09_使用pickle实现序列化和反序列化_神经元记忆移植.mp4

    Python3.5 Json与pickle实现数据序列化与反序列化操作示例

    主要介绍了Python3.5 Json与pickle实现数据序列化与反序列化操作,结合实例形式分析了Python3.5使用Json与pickle模块实现json格式数据的序列化及反序列化操作相关步骤与注意事项,需要的朋友可以参考下

    python3序列化与反序列化用法实例

    主要介绍了python3序列化与反序列化用法,实例分析了Python3使用pickle模块针对字符串进行序列化操作的相关技巧,需要的朋友可以参考下

    Python使用pickle模块实现序列化功能示例

    主要介绍了Python使用pickle模块实现序列化功能,结合实例形式分析了基于pickle模块的序列化操作相关操作技巧,需要的朋友可以参考下

    python序列化中的字符串,列表,字典,类的序列化解释

    上面例子中pickle序列化python的一个字符串 运行结果: b'\x80\x03X\x08\x00\x00\x00yuaneuroq\x00.' 解释: 最前面的b’ ’ 表示这是一个 bytes 对象 第一个字符\x80是一个操作码,是识别pickle协议 \x03

    详解Python中的序列化与反序列化的使用

    学习过marshal模块用于序列化和反序列化,但marshal的功能比较薄弱,只支持部分内置数据类型的序列化/反序列化,对于用户自定义的类型就无能为力,同时...cPickle和pickle的序列化/反序列化规则是一样的,我们可以使用

    json和pickle序列化文件的区别.docx

    适用于python小白更好的认识什么是json和pickle,更好地了解序列化,也更好地去了解他们之间的区别,希望大家喜欢

Global site tag (gtag.js) - Google Analytics