正在对数据进行序列化以及反序列化是常见的数据操作,Python提供了两个模块不便开发者完成数据的序列化操作,即 json 模块以及 pickle 模块。这两个模块次要区分以下:
json 是一个文本序列化格局,而 pickle 是一个二进制序列化格局;
json 是咱们能够直观浏览的,而 pickle 不成以;
json 是可互操作的,正在 Python 零碎以外宽泛应用,而 pickle 则是 Python 公用的;
默许状况下,json 只能示意 Python 内置类型的子集,不克不及示意自界说的类;
但 pickle 能够示意年夜量的 Python 数据类型。
保举学习:Python视频教程
Json 模块
Json 是一种轻量级的数据替换格局,因为其具备传输数据量小、数据格局易解析等特性,它被宽泛使用于各零碎之间的交互操作,作为一种数据格局通报数据。它蕴含多个罕用函数,详细以下:
dumps()函数
dumps()函数能够将 Python 工具编码成 Json 字符串。例如:
# 字典转成json字符串 加之ensure_ascii = False当前, 能够辨认中文, indent = 4 是距离4个空格显示 import json d = { '小明': { 'sex': '男', 'addr': '上海', 'age': 26 }, '小红': { 'sex': '女', 'addr': '上海', 'age': 24 }, } print(json.dumps(d, ensure_ascii = False, indent = 4)) # 执行后果: { "小明": { "sex": "男", "addr": "上海", "age": 26 }, "小红": { "sex": "女", "addr": "上海", "age": 24 } }
dump()函数
dump()函数能够将 Python工具编码成 json 字符串,并主动写入到文件中,没有需求再独自写文件。例如:
# 字典转成json字符串, 没有需求写文件, 主动转成的json字符串写入到‘ users.json’ 的文件中 import json d = { '小明': { 'sex': '男', 'addr': '上海', 'age': 26 }, '小红': { 'sex': '女', 'addr': '上海', 'age': 24 }, }# 关上一个名字为‘ users.json’ 的空文件 fw = open('users.json', 'w', encoding = 'utf-8') json.dump(d, fw, ensure_ascii = False, indent = 4)
loads()函数
loads()函数能够将 json 字符串转换成 Python 的数据类型。例如:
# 这是users.json文件中的内容 { "小明": { "sex": "男", "addr": "上海", "age": 26 }, "小红": { "sex": "女", "addr": "上海", "age": 24 } } #!/usr/bin / python3# 把json串变为python的数据类型 import json# 关上‘ users.json’ 的json文件 f = open('users.json', 'r', encoding = 'utf-8')# 读文件 res = f.read() print(json.loads(res)) # 执行后果: { '小明': { 'sex': '男', 'addr': '上海', 'age': 26 }, '小红': { 'sex': '女', 'addr': '上海', 'age': 24 } }
load()函数
load()跟loads()性能类似,load()函数能够将 json 字符串转换成 Python 数据类型,没有同的是前者的参数是一个文件工具,没有需求再独自读此文件。例如:
# 把json串变为python的数据类型: 字典, 传一个文件工具, 没有需求再独自读文件 import json# 关上文件 f = open('users.json', 'r', encoding = 'utf-8') print(json.load(f)) # 执行后果: { '小明': { 'sex': '男', 'addr': '上海', 'age': 26 }, '小红': { 'sex': '女', 'addr': '上海', 'age': 24 } }
Pickle 模块
Pickle 模块与 Json 模块性能类似,也蕴含四个函数,即 dump()、dumps()、loads() 以及 load(),它们的次要区分以下:
dumps 以及 dump 的区分正在于前者是将工具序列化,然后者是将工具序列化并保留到文件中。loads 以及 load 的区分正在于前者是将序列化的字符串反序列化,然后者是将序列化的字符串从文件读取并反序列化。
dumps()函数
dumps()函数能够将数据经过非凡的方式转换为只有python言语意识的字符串,例如:
import pickle# dumps性能 import pickle data = ['A', 'B', 'C', 'D'] print(pickle.dumps(data)) b '\x80\x03]q\x00(X\x01\x00\x00\x00Aq\x01X\x01\x00\x00\x00Bq\x02X\x01\x00\x00\x00Cq\x03X\x01\x00\x00\x00Dq\x04e.'
dump()函数
dump()函数能够将数据经过非凡的方式转换为只有python言语意识的字符串,并写入文件。例如:
# dump性能 with open('test.txt', 'wb') as f: pickle.dump(data, f) print('写入胜利')
写入胜利
loads()函数
loads()函数能够将pickle数据转换为python的数据构造。例如:
# loads性能 msg = pickle.loads(datastr) print(msg) ['A', 'B', 'C', 'D']
load()函数
load()函数能够从数据文件中读取数据,并转换为python的数据构造。例如:
# load性能with open('test.txt', 'rb') as f: data = pickle.load(f) print(data) ['A', 'B', 'C', 'D']
本文来自 python教程 栏目,欢送学习!
以上就是Python中Json模块以及Pickle模块的应用的具体内容,更多请存眷资源魔其它相干文章!
标签: json python教程 python编程 python使用问题 pickle
抱歉,评论功能暂时关闭!