Fork me on GitHub

pickle 序列化模块

# ### pickle 序列化模块
'''
把不能够直接存储的数据,变得可存储就是序列化
把存储好的数据,转化成原本的数据类型,叫做反序列化

php: 序列化与反序列化
serialize
unserialize
'''

# 导入pickle 模块  => 模块.方法()
import pickle
#dumps 把任意对象序列化成一个bytes
lst = [1,2,3,4,4,5]
res = pickle.dumps(lst)
print(res,type(res))
# b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04K\x04K\x05e.'

#loads 把任意bytes反序列化成原来数据
res = pickle.loads(res)
print(res,type(res))


# encode decode 能实现序列化么?
'''只有字符串可以使用encode或者decode ,容器类型数据等不可以.'''
# res = lst.encode("utf-8")
# print(res)


# 对函数进行序列化
def func():
	print("我就是个姑娘,小燕子,赵薇,还珠格格")
	
func()

# 序列化成字节流
res = pickle.dumps(func)
print(res)

# 反序列化字节流 恢复原来的数据类型
res = pickle.loads(res)
print(res)
res()


# 对迭代器进行序列化
it = iter(range(10))  
from collections import Iterator,Iterable
print(isinstance(it,Iterator))
res = pickle.dumps(it)
res = pickle.loads(res)
for i in res:
	print(i)

# 所有的数据类型都可以通过pickle模块进行序列化.


#dump  把对象序列化后写入到file-like Object(即文件对象)
#load  把file-like Object(即文件对象)中的内容拿出来,反序列化成原来数据
it = iter(range(10)) 
with open("ceshi.pkl",mode="wb") as fp:
	pickle.dump(it,fp)

with open("ceshi.pkl",mode="rb") as fp:
	res = pickle.load(fp)

print(res)
for i in res:
	print(i)

  

posted @ 2019-05-24 22:14  MR_黄Python之路  阅读(237)  评论(0编辑  收藏  举报