pickle.dump(obj, file,[,protocol])
参考原文
将程序中运行的对象信息保存到文件中去,实现了数据的序列化
pickle.dumps()
将对象obj序列化并返回一个
jason和pickle:用于序列化的两个模块:
- json: 可以在不同语言之间交换数据,用于字符串和python数据类型间进行转换。
- JSON在python中分别由list和dict组成。
- pickle:只用于python特有的类型和python的数据类型间进行转换。
- pickle的四个功能:dumps,dump,loads,load
import pickle
dictA = {'食品': 49,'购物': 26,'旅游':16}
#编码
dictA_str=pickle.dumps(dictA)
dictA_str
Out[1]: b'\x80\x03}q\x00(X\x06\x00\x00\x00\xe9\xa3\x9f\xe5\x93\x81q\x01K1X\x06\x00\x00\x00\xe8\xb4\xad\xe7\x89\xa9q\x02K\x1aX\x06\x00\x00\x00\xe6\x97\x85\xe6\xb8\xb8q\x03K\x10u.'
#解码
dictA_d=pickle.loads(dictA_str)
dictA_d
Out[2]: {'旅游': 16, '购物': 26, '食品': 49}
#保存
#方法1:
with open(r'ceshi.json', 'w') as fs:# dict转josn
pickle.dump(dictA,fs)
#方法2:
with open('ceshi.json', 'w') as fs:# dict转josn
dictA_str=pickle.dumps(dictA)
fs.write(dictA_str)
#读取
#方法1:
with open('ceshi.json', 'rb') as fl:# dict转josn
dictA_d=pickle.load(fl)
#方法2:
with open('ceshi.json', 'rb') as fl:# dict转josn
dictA_d=pickle.loads(fl.read())
dictA_d
Out[166]: {'旅游': 16, '购物': 26, '食品': 49}
注意区别:
1.json是可以在不同语言之间交换数据的;
pickle只在python之间使用。
2.json只能序列化最基本的数据类型,josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),比如日期格
式、类对象等josn就不行了;
pickle可以序列化所有的数据类型,包括类,函数都可以序列化。
Json模块四个功能:dumps、dump、loads、load
json.dumps(): 对json进行编码,把数据类型转换成字符串。
json.dump():对json进行编码, 把数据类型转换成字符串,并存储在文件中。
json.loads(): 对json进行解码,把字符串转换成数据类型 。
json.load(): 把文件打开,对json进行解码,从字符串转换成数据类型
import json
dictA = {'食品': 49,'购物': 26,'旅游':16}
#编码
dictA_str=json.dumps(dictA)
dictA_str
Out[1]: '{"\\u98df\\u54c1": 49, "\\u8d2d\\u7269": 26, "\\u65c5\\u6e38": 16}'
#解码
dictA_d=json.loads(dictA_str)
dictA_d
Out[2]: {'旅游': 16, '购物': 26, '食品': 49}
#保存
#方法1:
with open('ceshi.json', 'w',encoding='utf8') as fs:# dict转josn
json.dump(dictA,fs)
#方法2:
with open('ceshi.json', 'w',encoding='utf8') as fs:# dict转josn
dictA_str=json.dumps(dictA)
fs.write(dictA_str)
#读取
#方法1:
with open('ceshi.json', 'r',encoding='utf8') as fl:# dict转josn
dictA_d=json.load(fl)
#方法2:
with open('ceshi.json', 'r',encoding='utf8') as fl:# dict转josn
dictA_d=json.loads(fl.read())
dictA_d
Out[166]: {'旅游': 16, '购物': 26, '食品': 49}