序列化模块-json和pickle

一、json 

json是所有语言都通用的一种序列化格式 ,只支持 列表、 字典、 字符串、 数字 ,
字典的key必须是字符串
1、dumps、loods 
# 在内存中做数据转换 : 
# durps  数据类型  转成  字符串      序列化 
# loods    字符串    转成  数据类型  反序列化 
2、dump、 load 
# 直接将数据类型写入文件,直接从文件中读出数据类型
# dump  数据类型   写入  文件         序列化 
# load    文件          读出  数据类型  反序列化 

3、扩展:特殊的参数

import json

dic= {'key':'你好'}
print(json.dumps(dic,ensure_ascii=False))


# 格式化查看:
dic2 ={'username': ['李华','冯芬'],'sex':'male','age':16}
json_dic2= json.dumps(dic2,sort_keys=True,indent=4,separators=(',' , ':'),ensure_ascii=False)
print(json_dic2)

二、pickle

import pickle
#1.支持在python中几乎所有的数据类型
#2.只能在python中使用
dic = {(1,2,3):('a','b'),1:'abc'}
ret = pickle.dumps(dic)
#3.dumps 序列化的結果只能是字节
print(ret)
#b'\x80\x04\x95\x1f\x00\x00\x00\x00\x00\x00\x00}\x94(K\x01K\x02K\x03\x87\x94\x8c\x01a\x

print(pickle.loads(ret))
# {(1, 2, 3): ('a', 'b'), 1: 'abc'}

#4.在和文件操作的时候,需要用rb wb的模式打开文件
# dump
with open('pickle_file', 'wb') as f:
    pickle.dump(dic,f)
# Load
with open('pickle_file','rb') as f:
    ret = pickle.load(f)
    print(ret,type(ret))
    # {(1, 2, 3): ('a', 'b'), 1: 'abc'} <class 'dict'>

#5.可以多次dump和多次lood
dic = {(1,2,3):('a','b'),1:'abc'}
dic1 = {(1,2,3):('a','b'),2:'abc'}
dic2 = {(1,2,3):('a','b'),3: 'abc'}
# dump
with open('pickle_file', 'wb') as f:
    pickle.dump(dic,f)
    pickle.dump(dic1,f) 
    pickle.dump(dic2,f)
    
# Load
with open('pickle_file','rb') as f:
    while 1:
        try:
            ret = pickle.load(f)
            print(ret,type(ret))
            # {(1, 2, 3): ('a', 'b'), 1: 'abc'} <class 'dict'>
            # {(1, 2, 3): ('a', 'b'), 2: 'abc'} <class 'dict'>
            # {(1, 2, 3): ('a', 'b'), 3: 'abc'} <class 'dict'>
        except EOFError:
            break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python_198

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值