python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > pickle模块

Python中的pickle模块解析

作者:XWenXiang

这篇文章主要介绍了Python中的pickle模块解析,pickle 模块和 json 模块很像,都有序列化的功能,不过 pickle 模块更加局限一些只能对 python 使用,它可以对一个 python 对象结构的二进制序列化和反序列化,需要的朋友可以参考下

pickle模块简介

pickle 模块和 json 模块很像,都有序列化的功能,不过 pickle 模块更加局限一些只能对 python 使用,它可以对一个 python 对象结构的 二进制 序列化和反序列化。

序列化是将 Python 对象及其所拥有的层次结构转化为一个字节流的过程。反序列化则反之。

pickle模块语法

pickle.dumps

将 python 对象作为 bytes 类型直接返回

import pickle
		class MyCls(object):
		    pass
		x = pickle.dumps(MyCls)
		print(x)

打印结果

b'\x80\x04\x95\x16\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main__\x94\x8c\x05MyCls\x94\x93\x94.'

示例中将一个类的结构序列化成了字节串

pickle.dump

和 json.dump 一样也是写入文件的

import pickle
		class MyCls(object):
		    pass
		with open('obj', 'wb')as f:
		    pickle.dump(MyCls, f)

pickle.loads

将字节流返回成一个对象的原本的结构形式

import pickle
		class MyCls(object):
		    name = 'x'
		x = pickle.dumps(MyCls)
		# print(x)
		y = pickle.loads(x)
		print(y)
		print(y.name)

打印结果

<class '__main__.MyCls'>
x

返回出来的是原本对象的结构,所以原本使用的方法都不变

pickle.load

将文件中的字节串反序列化

import pickle
		class MyCls(object):
		    name = 'x'
		with open('obj', 'wb')as e:
		    pickle.dump(MyCls, e)
		with open('obj', 'rb')as f:
		    x = pickle.load(f)
		print(x.name)

到此这篇关于Python中的pickle模块解析的文章就介绍到这了,更多相关pickle模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文