在对数据举行序列化和反序列化是罕见的数据操纵,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模块的运用的细致内容,更多请关注ki4网别的相干文章!