2021/1/10 序列化模块(python)
JSON序列化
json.dumps()和json.loads()
import json dic = {'username': "ping_sen", ' password': 123456, 'flag': False} print("原始数据:", dic) respose = json.dumps(dic) print("JSON序列化数据:", respose) respose_bytes = respose.encode() print("bytes化网络数据:", respose_bytes) request = respose_bytes.decode() print("接收网络数据:", request) req = json.loads(request) print("接收后的JSON数据:", req)

json 写入文件
import json dic = {'username': "ping_sen", ' password': 123456, 'flag': False} with open("1.json", mode='w', encoding='utf-8') as f1: f1.write(json.dumps(dic))
读取json文件
import json dic = {'username': "ping_sen", ' password': 123456, 'flag': False} with open("1.json",encoding='utf-8') as f1: r = f1.read() print(json.loads(r))

多json写入文件
import json dic1 = {'username': "ping_sen", ' password': 123456, 'flag': False} dic2 = {'username': "111", ' password': 1234121256, 'flag': False} dic3 = {'username': "12312", ' password': 3121231, 'flag': False} with open('2.json','a', encoding='utf-8') as f1: f1.write(f"{json.dumps(dic1)}\n{json.dumps(dic2)}\n{json.dumps(dic3)}\n")

读取多条json文件信息
import json with open('2.json', encoding='utf-8') as f1: for line in f1: r = json.loads(line) print(r)

pickle(用于网络传输)
pickle.dumps()和pickle.loads()
dumps方法
import pickle lis = [11, 22, "23121", "asdsda", False, {1: '2'}] ret = pickle.dumps(lis) print(ret)

由于pickle直接将数据转化为bytes类型数据,所以在打印时为bytes数据
loads方法
import pickle lis = [11, 22, "23121", "asdsda", False, {1: '2'}] ret = pickle.dumps(lis) print(pickle.loads(ret))

pickle文件操作
写
import pickle lis = [11, 22, "23121", "asdsda"] with open("1.pickle", 'wb') as f1: f1.write(pickle.dump(lis, f1))
pickle.dump()方法直接将文件内容转变为bytes类型数据,所以在引入open()内置函数时,其中的mode模式要改为‘wb’模式(写入bytes类型数据)
读
import pickle lis = [11, 22, "23121", "asdsda"] with open("1.pickle", mode='rb') as f1: print(pickle.load(f1))
序列化模块总结:
由于常规数据类型在转化为能够进行网络数据通信的bytes数据结构后不能够进行逆向转化,所以引入序列化模块,将传入的数据变为可逆向转化的类型。JSON.dumps多用于网络传输和文件存取,JSON.dump()用于单个数据存取,pickle.dumps网络传输,pickle.dump文件存取

浙公网安备 33010602011771号