• 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中使用
    
    '''
  • 相关阅读:
    LeetCode--Sudoku Solver
    LeetCode--Merge Intervals
    LeetCode--Valid Number
    LeetCode--Max Points on a Line
    1.1
    智能指针原理与简单实现(转)
    C++内存管理(转)
    算法题--扔棋子
    LeetCode--Substring with Concatenation of All Words
    线性代数与MATALB1
  • 原文地址:https://www.cnblogs.com/schut/p/8436782.html
Copyright © 2020-2023  润新知