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)
时间: 2024-12-13 08:31:37

python序列化pickle的相关文章

Python 序列化 pickle/cPickle模块

Python序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人.你会怎么做?这取决于你想要怎么保存,怎么重用,发送给谁.很多游戏允许你在退出的时候保存进度,然后你再次启动的时候回到上次退出的地方.(实际上,很多非游戏程序也会这么干)在这种情况下,一个捕获了当前进度的数据结构需要在你退出的时候保存到硬盘上,接着在你重新启动的时候从硬盘上加载进来. Python标准库提供pickle和cPickle模块.cPickle是用C编码的,在运行效率上比pickle要高,

python 序列化 pickle和json

我们把对象(变量)从内存中变成可存储或传输的过程称为序列化,在Python中用pickle或json标准库.序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输的别的计算机上. pickle:支持Python里所有的数据类型(包括函数) json:支持str,int,tule,list,dict 如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为json,因为json表示出来就是一个字符串,可以被所以语言所读取,也可以方便地存储到磁盘

python序列化 pickle,json模块

Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类型]间进行转换 Json模块提供了四个功能:dumps.dump.loads.load pickle模块提供了四个功能:dumps.dump.loads.load pickle.dump[ojb, file [,protocol] 序列化对象,并将结果数据流写入到文件对象中. 必填参数ojb表示要封装的对象

python 序列化pickle 和 encode的区别

我们把变量从内存中变成可存储或传输的过程称之为序列化. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling. encode 编码和 decode 解码 是在文件中读取或者写入数据,但是都是写入的字符串的二进制格式,没有数据类型的分别 两者都是将数据转换为 bytes 但是    pickle 变成二进制还能保持数据类型  encode只能是字符串变二进制 原文地址:https://www

python 序列化 json pickle

python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象. 基本接口: pickle.dump(obj, file, [,protocol]) 注解:将对象obj保存到文件file中去. protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示:1:老式的二进制协议:2:2.3版本引

Python序列化之json与pickle

1.json介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等

6.python序列化功能之json&pickle

json模块是个非常重要的模块,可以实现任何语言之间跨平台的数据交换,还可以实现一些比较简单的数据类型的持久化.(这里的持久化就是说,把python内部一些比较简单的数据类型,比如说像字符串,列表,元组,字典之类的数据类型,转换为json字符串的标准格式,保存到硬盘中.) json模块常用函数: json.dumps():将python以字典为主的数据类型,包括(列表,元组,等)转换为json字符串. json.loads():将json字符串转换为python可识别的数据类型. json.du

Python之pickle序列化

内存中有一个数据结构,你希望将它保存下来,重用,或者发送给其他人.你会怎么做?这取决于你想要怎么保存.怎么重用.发送给谁.很多游戏允许你在退出时保存进度,然后你再次启动的时候回到上次退出的地方.(实际上,很多非游戏程序也会这么干.)在这个情况下,一个捕获了当前进度的数据结构需要在你退出的时候保存到磁盘上,接着你重新启动的时候从磁盘上加载进来. Python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过

Python序列化与反序列化-json与pickle

Python序列化与反序列化-json与pickle 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.json的序列化方式与反序列化方式 1>.json序列化 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90