模块 json 和 pickle
2024-09-05 02:55:16
序列化
序列:字符串
序列化:将其它数据类型转换成字符串的过程。
反序列化:字符串转成其它数据类型。
序列化的目的
1:以某种存储形式使用自定义对象持久化。
2:将对象从一个地方传递到另一个地方。
3:是程序更具有维护性。
json 和 pickle 模块
用于序列化的两个模块
json,用于字符串和 python 数据类型间进行转换。
pickle,用于 python 特有的数据类型和 python 的数据类型进行转换。
注意:pickle 仅用于 python
- json
# dumps 和 loads
import json
dic = {'a':1,'b':2,'c':3}
res = json.dumps(dic) # 序列化:将一个字典转换成一个字符串
print(res,type(res))
# {"a": 1, "b": 2, "c": 3} <class 'str'>
res1 = json.loads(res) # 反序列化:将一个字符串格式的字典转换成一个字典
# 注意:要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示。
print(res1,type(res1))
# {'a': 1, 'b': 2, 'c': 3} <class 'dict'>
# 也可处理嵌套的数据类型
lis = [1,2,['a','b','c'],3,{'k1':'a','k2':'b','k3':'c'}]
res = json.dumps(lis)
print(res)
# [1, 2, ["a", "b", "c"], 3, {"k1": "a", "k2": "b", "k3": "c"}]
res1 = json.loads(res)
print(res1)
# [1, 2, ['a', 'b', 'c'], 3, {'k1': 'a', 'k2': 'b', 'k3': 'c'}]
# dump 和 load
import json
dic = {'name':'zkim','age':18,'hobby':'running'}
with open('user_info','w',encoding='utf-8')as f:
json.dump(dic,f)
# dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
with open('user_info','r',encoding='utf-8')as f:
res = json.load(f)
print(res)
# load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
- pickle
import pickle
# dumps 和 loads
dic = {'name':'zkim','hobby':'running'}
str_dic = pickle.dumps(dic)
print(str_dic) # 一串二进制
str_dic1 = pickle.loads(str_dic)
print(str_dic1)
# {'name': 'zkim', 'hobby': 'running'}
# dump 和 load
with open('userinfo.txt','wb')as f:
pickle.dump(dic,f)
with open('userinfo.txt','rb')as f:
res = pickle.load(f)
print(res)
# {'name': 'zkim', 'hobby': 'running'}
最新文章
- CSS选择器的权重与优先规则?
- 【代码笔记】iOS-自定义导航条颜色
- 如何关闭eslint
- Android 手机蓝牙接收文件夹
- vs2013 内置IIS Express相关问题
- 【转载】Velocity模板引擎的介绍和基本的模板语言语法使用
- 提高php编程效率技巧
- Java API —— Calendar类
- Android打包失败Proguard returned with error code 1. See console
- (转载)PHP删除数组中的特定元素的代码
- 函数式编程做用户登陆注册练习-pycharm上
- Struts2返回Json数据(使用Struts2插件)
- Android下调用收发短信邮件等
- hdu5044 Tree 树链拆分,点细分,刚,非递归版本
- 密钥public/private key登陆linux
- 使用jekyll和Github搭建个人博客
- angular之表达式
- Lodop如何设置预览后导出带背景的图,打印不带背景图
- [UVALive 3661] Animal Run
- 使用flask-alchemy 过程中报错KeyError: &#39;SQLALCHEMY_TRACK_MODIFICATIONS&#39;
热门文章
- js 将网络图片格式转为base64 canvas 跨域
- java中 什么是反射?
- golang通过ssh实现远程文件传输
- VVDocumenter-Xcode
- 使用Neo4j分析《权力的游戏》
- new Handler()和new Handler(Looper.getMainLooper())的区别是什么?
- Angular 自定义模块以及配置路由实现模块懒加载
- Expression: __acrt_first_block == header
- Elasticsearch 7.x文档基本操作(CRUD)
- 【产品】C转B