zoukankan      html  css  js  c++  java
  • 序列化与反序列化,json,pickle,xml,shelve,configparser模块

    序列化与反序列化

    什么是序列化?
    序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输。
    反序列化就是将硬盘中或者网络中传来的一种数据格式转换成内存中数据结构。

    为什么要有?

    1.可以保存程序的运行状态
    2.实现数据的跨平台交互

    怎么用?

    json&pickle模块
    其中json是通用的而pickle是只能在python识别

    json优点:
    具有跨平台性

    json的局限性
    只能支持/对应python部分的数据类型


    pickle的优点:
    可以支持所有的python数据类型

    pickle的缺点:
    只能被python识别,不能跨平台

    ————————————————————————————————————————————————————————————————————————————————————————————————————————————
    json的序列化.py



    import json


    func_dic = {
    '1': 'login',
    '2': 'register',
    '3': 'check_balance',
    '4': 'transfer',
    '5': 'reply',

    }

    # 序列化:将内存中的数据类型——————————————>json中间格式

    # 1.序列化得到json_str
    # json_str = json.dumps(func_dic)

    # print(json_str,type(json_str))
    # {"1": "login", "2": "register", "3": "check_balance", "4": "transfer", "5": "reply"} <class 'str'>

    # json格式全都是双引号


    # 2.把json_str写入文件存起来
    # with open('func.json','wt',encoding='utf-8')as f :
    # f.write(json_str)

    # 1跟2合为一步
    with open('func.json','wt',encoding='utf-8')as f:
    json.dump(func_dic,f)


    ______________________________________________________________________________________________________________
    json的反序列化.py


    import json

    # 反序列化:json的中间格式------------------>内存中的数据类型

    #从文件中读取json_str
    # with open('func.json','rt',encoding='utf-8')as f:
    # json_str = f.read()
    #
    # # 将json_str转化成内存中的数据类型
    # func_dic = json.loads(json_str)
    #
    # print(func_dic['2'])

    # 1跟2可以合成一步

    with open('func.json','rt',encoding='utf-8')as f:
    func_die = json.load(f)

    print(func_die['1'])


    ——————————————————————————————————————————————————————————————————————————————————————————————————————————————
    json注意点
    # json格式不能识别单引号,只能识别双引号


    import json




    # with open('func1.json','rt',encoding='utf-8')as f:
    # l = json.load(f)
    # print(l)


    # 用json序列化
    # with open('func1.json','wt',encoding='utf-8')as f:
    # l=[1,None,True]
    # json.dump(l,f)




    # 用evel反序列化
    # with open('func.json','rt',encoding='utf-8')as f:
    # s = f.read()
    # func_dic = eval(s)
    # print(func_dic['1'])




    # with open('func1.json','rt',encoding='utf-8')as f:
    # s=f.read() #s = '[1,null,true]'
    # l = eval(s) #evel('[1,null,true]')
    # print(l)


    # evel是把后面的字符串里的表达式拿出来在当前位置运行一下,把结果赋值给一个变量名



    ————————————————————————————————————————————————————————————————————————————————————————————————————————————-—
    pickle的序列化与反序列化.py

    import pickle


    # dic = {'name':'zrg','password':123,'height':170,'weight':120}
    #
    # # 序列化
    # pkl = pickle.dumps(dic)
    # print(pkl,type(pkl))
    #
    # with open(r'db.pkl','wb')as f:
    # f.write(pkl)


    # with open(r'db.pkl','wb')as f:
    # pickle.dump(dic,f)



    # 反序列化
    # with open(r'db.pkl','rb')as f:
    # pkl = f.read()
    # dic = pickle.loads(pkl)
    # print(dic['name'])


    # with open(r'db.pkl','rb')as f:
    # dic = pickle.load(f)
    #
    # print(dic['weight'])
























































  • 相关阅读:
    python开发环境安装
    python文件I/O
    python字符串方法以及注释
    python列表
    php: Can't use function return value in write context
    Notice : brew install php70
    对web开发从业者的发展方向的思考
    关于微信跨号支付
    MySQL触发器写法
    MySQL慢查询日志
  • 原文地址:https://www.cnblogs.com/zhangrenguo/p/9806434.html
Copyright © 2011-2022 走看看