json和pickle序列化模块

一、json序列化模块

  1、序列化:将内存数据转成字符串加以保存。

  2、反序列化:将字符串转成内存数据加以读取。

data = { '北京':{
                     '五道口':{
                         'sohu':'引擎',
                     }
                   }
               }
# dumps <-->  loads
'''
    只是把数据类型转成字符串存到内存(json.dumps,json.loads)里的意义?
    1、把你的内存数据通过网络远程共享给其他人
    2、定义了不同语言之间的交互规则
        <1> 纯文本:不能共享复杂的数据类型
        <2> xml:占空间大
        <3> json:简单,可读性好
'''
d = json.dumps(data) # 仅转成字符串  <class 'str'>
print(d,type(d))     # {"u5317u4eac": {"u4e94u9053u53e3": {"sohu": "u5f15u64ce"}}}

d_1 = json.loads(d)  # 将字符串转成原本的数据类型  <class 'dict'>
print(d_1,type(d_1))           # {'北京': {'五道口': {'sohu': '引擎'}}}

# dump  <-->  load
f = open('test.json','w') # 先打开再读写
d2 = json.dump(data,f) # 转成字符串并写入文件

f1 = open('test.json','r')
d_2 = json.load(f1) # 将文件转成原来的数据类型
print(d_2)  # {'北京': {'五道口': {'sohu': '引擎'}}}

 

二、pickle序列化模块

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
# write by congcong

import pickle

dict = {'name':'cc','age':21}
len = ['python','hello','world']

# dumps <--> loads
d = pickle.dumps(dict) # 字符串转成bytes类型
print(d) # b'x80x03}qx00(Xx04x00x00x00nameqx01Xx02x00x00x00ccqx02Xx03x00x00x00ageqx03Kx15u.'
d_1 = pickle.loads(d)  # bytes类型转为原数据类型
# print(d_1)  # {'name': 'cc', 'age': 21}

# dump <--> load
# pk = open('data.pkl','wb')
# d2 = pickle.dump(dict,pk) # 字符串转成bytes类型,并保存到硬盘

pk_r = open('data.pkl','rb') # 将硬盘里的bytes类型转为原数据类型
d_2 = pickle.load(pk_r)
print(d_2)  #  {'name': 'cc', 'age': 21}

'''
json 和 pickle 的区别:
    json  支持的数据类型 str ,int ,tuple , list , dict ,可跨语言
     
    pickle  支持python里所有的数据类型,但只能在python中使用

'''
原文地址:https://www.cnblogs.com/schut/p/8436782.html