Python的pickle模块的使用

pickle.dump(obj, file,[,protocol])

参考原文
将程序中运行的对象信息保存到文件中去,实现了数据的序列化

pickle.dumps()

将对象obj序列化并返回一个

jason和pickle:用于序列化的两个模块:

  1. json: 可以在不同语言之间交换数据,用于字符串和python数据类型间进行转换。
  2. JSON在python中分别由list和dict组成。
  3. pickle:只用于python特有的类型和python的数据类型间进行转换。
  4. 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}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值