Python json和pickle模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python json和pickle模块相关的知识,希望对你有一定的参考价值。
序列化模块:json 和 pickle
用于序列化的两个模块
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
import json s = ‘{"key1":"value1","key2":"value2"}‘ # ==> 用json模块将字符串转化成其他数据类型,字符串里出现引号必须用双引号 ret = json.loads(s) # ==> loads 由字符串转其他数据类型 print(ret,type(ret)) l = ‘[11,22,3,56,75]‘ result =json.loads(l) print(result,type(result)) # 输入结果: {‘key1‘: ‘value1‘, ‘key2‘: ‘value2‘} <class ‘dict‘> [11, 22, 3, 56, 75] <class ‘list‘>
import json ret = json.load(open(‘ethan.txt‘,‘r‘)) # ==> 将文档(内部是字符串格式)转换成python的其他数据类型 print(ret,type(ret)) # ==> 文档里是字典样式的字符串 # 输入结果: {‘key1‘: ‘value1‘, ‘key2‘: ‘value2‘} <class ‘dict‘> # 总结: # json.loads()用于将形似字典、列表、元组的字符串,转换成字典、列表、元组 # json.load() 用于将文档(内容是形似字典、列表、元组的字符串)转换成字典、列表、元组
import json di = {"key1":"value1","key2":"value2"} ret = json.dumps(di) # ==> 将字典、列表、元组 转换成字符串格式 print(ret,type(ret)) # 输入结果: {"key1": "value1", "key2": "value2"} <class ‘str‘> json.dump(di,open(‘test2.txt‘,‘a+‘)) # ==> 将字典、元组、列表转换成字符串格式并写入文档 # 输入结果: test2文件内容 {"key1": "value1", "key2": "value2"} # 总结: # json.dumps() 用于将字典、列表、元组,转换成字符串 # json.dump() 用于将字典、列表、元组,存入文档中并转换成字符串
import pickle d = {‘name‘: ‘ethan‘, ‘age‘: 28} ret = pickle.dumps(d) # ==> pickle将字典、元组、列表转换成二进制 print(ret, type(ret)) l = [11, 22, 3, 45, 54] res = pickle.dumps(l) print(res) pickle.dump(d, open(‘test2.txt‘, ‘ab‘)) # ==> 将字典、元组、列表转换成二进制写入文档 # 注意 dump load 不要一起运行,会报错,一步一步来 f = open(‘test2.txt‘, ‘rb‘) r = pickle.loads(f.read()) # ==> 将二进制转换成字典、列表、元组 # r = pickle.load(f) print(r) # 输入结果: b‘\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x05\x00\x00\x00ethanq\x02X\x03\x00\x00\x00ageq\x03K\x1cu.‘ <class ‘bytes‘> b‘\x80\x03]q\x00(K\x0bK\x16K\x03K-K6e.‘ {‘name‘: ‘ethan‘, ‘age‘: 28} # 总结: # pickle.dumps() 用于将字典、列表、元组,转换成二进制 # pickle.dump() 用于将字典、列表、元组,存入文档中并转换成二进制 # pickle.loads() 用于将二进制,转换成字典、列表、元组 # pickle.load() 用于将文档二进制,转换成字典、列表、元组
以上是关于Python json和pickle模块的主要内容,如果未能解决你的问题,请参考以下文章