zoukankan      html  css  js  c++  java
  • 序列化及反序列化

    1、序列化:

    序列化:从数据类型--->字符串的过程;

    反序列化:字符串--->数据类型的过程;

    序列化用到的模块有json、pickle、shelve

    json
    #通用的序列化格式
    #只有很少的一部分数据类型能够通过json转化为字符串
    pickle
    #所有的Python数据类型都可以转化为字符串类型
    #pickle序列化的数据类型只有Python能够理解,且部分反序列化依赖Python代码
    shelve
    #序列化句柄
    #使用序列号句柄直接操作,比较方便
    2、json中有序列化方法dumps,反序列化方法loads
    import json
    dic = {'k1':'22'}
    print(type(dic),dic)
    str_d = json.dumps(dic)
    print(type(str_d),str_d)
    
    dic_a = json.loads(str_d)
    print(type(dic_a),dic_a)
    

     3、json中对文件内容操作的序列化操作dump,反序列化操作load

    1 import json
    2 dic = {'k1':'','k2':'广东'}
    3 f = open('xuliehua','w',encoding='utf-8')
    4 json.dump(dic,f,ensure_ascii=False)
    5 f.close()
    6 f = open('xuliehua',encoding='utf-8')
    7 res = json.load(f)
    8 f.close()
    9 print(type(res),res)
    View Code

     4、pickle模块方法

    pickle模块有四个功能:dumps、dump(序列化及存储功能)、loads(反序列化及读取)、load(不仅可以序列化字典、列表,可把Python里任意数据类型序列化)
    pickle序列化以后是byte类型数据,一般用在Python内部使用,如果被序列化的文件要被java、js等语言读取则还是用Json,所以如果序列号是字典或列表请优先
    用json。
     1 import  pickle
     2 dic = {'k1':'v1','k2':'v2','k3':'v3'}
     3 str_dic = pickle.dumps(dic)
     4 print(str_dic)
     5 
     6 dic2 = pickle.loads(str_dic)
     7 print(dic2)
     8 
     9 import time
    10 struct_time1 = time.localtime(1000000000)
    11 struct_time2 = time.localtime(2000000000)
    12 f = open('pickle_test_file','wb')
    13 pickle.dump(struct_time1,f)
    14 pickle.dump(struct_time2,f)
    15 f.close()
    16 
    17 f = open('pickle_test_file','rb')
    18 struct_time1 = pickle.load(f)
    19 struct_time2 = pickle.load(f)
    20 print(struct_time1.tm_year)
    21 print(struct_time2.tm_year)
    22 f.close()
    View Code
    1 b'x80x03}qx00(Xx02x00x00x00k1qx01Xx02x00x00x00v1qx02Xx02x00x00x00k2qx03Xx02x00x00x00v2qx04Xx02x00x00x00k3qx05Xx02x00x00x00v3qx06u.'
    2 {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
    3 2001
    4 2033
    结果

     

  • 相关阅读:
    docker容器,镜像常用操作
    微信小程序登录状态
    微信小程序登录流程图
    GET和POST可传递的值到底有多大?
    php发送请求
    thinkphp 导入微信小程序加密解密库
    thinkphp 随机获取一条数据
    bootstrap row 行间距
    webstorm es6 语法报错
    Laravel
  • 原文地址:https://www.cnblogs.com/xiaofei1106/p/12791756.html
Copyright © 2011-2022 走看看