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)