首页 > Python3教程 > Python3 File(文件) 操作

Python3 使用pickle进行序列化与反序列化

本文介绍pickle序列化与反序列化的方法,欢迎大家的学习。

python的pickle模块提供了一个简单的持久化存储功能,能将数据对象(列表、字典、集合、类等)以文件的形式存放在磁盘上。

python的pickle模块实现了基本的数据序列化和反序列化。

通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。

通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

基本函数

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

参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。

protocol的值还可以是1或2,表示以二进制的形式序列化。

对 file 以读取的形式打开:

s = pickle.load(file)

import pickle

d = dict(name= "aa", nu= 1, language= "python")
a= pickle.dumps(d)
# b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X
# \x02\x00\x00\x00aaq\x02X\x02\x00\x00\x00nuq
# \x03K\x01X\x08\x00\x00\x00languageq\x04X\x06
# \x00\x00\x00pythonq\x05u.'
print(a)

f = open('aa.txt', 'wb')
pickle.dump(d, f)

f.close() 

 文件内容:

Python3 使用pickle进行序列化与反序列化

import pickle

# 使用pickle模块将数据对象保存到文件
data1 = {'a': [1, 2.0, 3, 4+6j],
'b': ('python', u'Unicode python'),
'c': None
}

list = [1, 2, 3]
list.append(list)

output = open('aa.txt', 'wb')

# 默认protocol0
pickle.dump(data1, output)

# protocol-1
pickle.dump(list, output, -1)

output.close()

将对象从磁盘文件读到内存时,先把内容读到一个bytes,再用pickle.loads()方法反序列化出对象,

或直接用pickle.load()方法从一个file-like Object中反序列化出对象

import pickle

f = open('aa.txt', 'rb')
s = pickle.load(f)
f.close()
# 输出 {'name': 'aa', 'nu': 1, 'language': 'python'}
print(s)

 

import pprint, pickle

#使用pickle模块从文件中重构python对象
f = open('aa.txt', 'rb')

a = pickle.load(f)
pprint.pprint(a)

a2 = pickle.load(f)
pprint.pprint(a2)

f.close()

输出:

Python3 使用pickle进行序列化与反序列化

 

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。