2.6 - python数据传输:json、pickle和xml
2.6.1 python数据传输
在机器学习中,数据集的标签经常存储到为 json文件或pickle文件。
将python中的结构转换为json格式的字符串,称为:序列化。将json格式的字符串还原为python数据结构,称为:反序列化。
1)json
import json info = {'name': 'Deny', 'age': 12, 'address':'guangzhou'} # 序列化 info_str = json.dumps(info) print(type(info_str), info_str) # 反序列化 py_data = json.loads(info_str) print(type(py_data), py_data) # 序列化并将序列化后的字符串存储到文件中 with open(r'./Dir1/info_str.json', mode='w') as file: json.dump(info, file) # 读取文件中的字符串并反序列化 with open(r'./Dir1/info_str.json') as file: print(json.load(file))
json键值对的键:永远是str类型。因此,原始python数据在经过序列化之后,其键值对的键会被强制转化为字符串类型!!!
而pickle,是二进制存储,不会对原始的python数据有任何的改动。
2)pickle
pickle是一个Python专用的二进制序列化格式,不可直观阅读。
import pickle info = {'name': 'Deny', 'age': 12, 'address': 'guangzhou', 123: 456} # 序列化 pickle_info = pickle.dumps(info) print(type(pickle_info), pickle_info) # 反序列化 string = pickle.loads(pickle_info) print(type(string), string) # 序列化并存入到文件 with open(r'./Dir1/info.pickle', mode='wb') as file: pickle.dump(info, file) # 从文件中取出二进制文件并还原 with open(r'./Dir1/info.pickle', mode='rb') as file: print(pickle.load(file))
综上:
序列化:dumps=》序列化并返回json字符串或二进制字符串 dump=》序列化并将结果写入到文件
反序列化:loads=》将json字符串或二进制字符串反序列化并返回 load=》从文件中读取内容并将其反序列化
2.6.2 xml
标签树