序列化是指,把存储在内存中的对象,转存到磁盘或者其他存储介质上的过程。
反过来,从磁盘等存储介质上将已经序列化的对象加载到内存之中的过程叫做反序列化。
python中的pickle模块可以帮助我们实现序列化和反序列化的过程。
pickle.dumps()可以直接将对象序列化为bytes,我们可以再对已经序列化之后的bytes进行操作。
pickle.dump则会直接将任意对象序列化为bytes并存储到文件之中。
with open('xxx.data', 'wb') as f:
pickle.dump(xxx, f)
当然,我们也可以进行反序列化操作。
比如。我们可以将文件用’rb’模式打开,通过read()作为bytes读入之后,再调用pickle.loads(data)来把已经序列化的对象加载到内存之中。
我们也可以再打开文件后,用pickle.load(file)来直接从文件中读取对象。
需要注意的是,pickle的序列化与反序列化的操作只能用于python而不能被其他语言读取。此外,我们还必须要注意python版本问题,因为,不同版本的python之间可能存在兼容性问题。