序列化模块_pickle
2024-10-15 03:11:35
序列化:
把不能够直接存储的数据变成字节流(bytes)保存在文件,
进行持久化存储
反序列化:
任何数据都可以转成字节流(bytes)进行存储:
1. dumps
把任意对象序列化
li = [1, 2, 4]
res = pickle.dumps(li) # 返回bytes
print(res, type(res))
2. loads
把字节流转换为原本的数据
li1 = pickle.loads(res) # 转换回的数据类型为list
print(li1, type(li1))
3. dump(obj, f)
将数据写入文件
with open('1.txt', 'wb') as f:
li = [1, 2, 4, 5] # 将li转换成bytes, 使用f句柄写入文件, 没有返回值
pickle.dump(li, f)
4. load(f)
读取写入文件中的字节流数据, 并将其转换成原本的数据
with open('1.txt', 'rb') as f:
res = pickle.load(f) # 读取f中写入的数据对象, 将bytes转换成原本的数据类型
print(res, type(res))
序列化迭代器
iter1 = iter(range(5))
res = pickle.dumps(iter1) iter2 = pickle.loads(res)
print(iter2, type(iter2))
多数据对象使用pickle写入文件
li = [1, 2, 4, 5]
tup = (1, 2, 4, 5)
dic = {1:2, 2:3, 4:3}
s = 'abc'
setvar = {1, 2, 4} with open('2.txt', 'wb') as f:
pickle.dump(li, f)
pickle.dump(tup, f)
pickle.dump(setvar, f)
pickle.dump(dic, f)
pickle.dump(s, f) with open('2.txt', 'rb') as f:
# f也是一个迭代器,
# load相当于next, 不断调用f
# 返回反序列化后的数据
for i in range(5):
res = pickle.load(f)
print(res, type(res))
最新文章
- redis学习教程地址
- sql中文日期格式转换(xxxx年x月x日)
- rails下自动更新静态文件的gem包
- iOS 三方库fmdb 的使用
- 自动获取socket链接状态
- PHP+微信分享自定义小图标
- 021ARM处理器工作模式
- java语法:字符串数组的赋值
- linux下安装redis和phpredis扩展
- 关于JS数组的栈和队列操作
- asp.net导入后台代码
- MassTransit 学习
- Recent papers on Action Recognition | 行为识别最新论文
- php array_rand()函数从数组中随机选择一个或多个元素
- C# winIO32位,64位的使用(运行时要用管理员身份)
- docker 部署django项目(nginx + uwsgi +mysql)
- 「CodePlus 2017 11 月赛」大吉大利,晚上吃鸡!(dij+bitset)
- Linux启动与禁止SSH用户及IP的登录
- SparkR:数据科学家的新利器
- supervisor初试
热门文章
- win10磁盘/cpu占用100%问题
- 上传文件代码报错,java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
- 对C语言指针的理解
- angularjs - 自定义指令(directive)
- MHA-Atlas-MySQL高可用集群
- Ajaxpro使用的方法
- [cf1025D][区间dp]
- Linux下搭建测试环境
- APIPA
- CodeForce 517 Div 2. C Cram Time