• 数据序列化


    数据序列化:通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长。并且需要时可以再次将这个对象读取出来。Python中有几个常用模块可实现这一功能。

    所谓的序列化其实将对象字符串化,从而可以以多种形式存储,如存储在文件中,反序列化为执行相反的操作。

    json模块:用于不同语言之间的交互

    用到的属性:dumpsdump loadsload

    将列表形式数据序列化:

    import json as j
    lst = ['kill','nwc','hello word','china']
    lst_j = j.dumps(lst)
    print(lst_j) #序列化
    print(lst) #原列表
    print(j.loads(lst_j)) #反序列化

    ["kill", "nwc", "hello word", "china"]
    ['kill', 'nwc', 'hello word', 'china']
    ['kill', 'nwc', 'hello word', 'china']

    import json as j
    lst = ['kill','nwc','hello word','china']
    lst_j = j.dumps(lst)
    # print(lst_j) #序列化
    # print(lst) #原列表
    # print(j.loads(lst_j)) #反序列化
    
    with open('d:json.txt','w',encoding= 'utf-8') as f:
        f.write(lst_j)

    import json as j
    lst = ['kill','nwc','hello word','china']
    with open('d:json.txt','r',encoding= 'utf-8') as f:
        print(j.loads(f.read())) #从文件读取反序列化
    print(lst)

    ['kill', 'nwc', 'hello word', 'china']
    ['kill', 'nwc', 'hello word', 'china']

    涉及到文件读写相关序列化的操作可以用loaddump代替loadsdumps

    import json as j
    lst = ['kill','nwc','hello word','china']
    with open('d:json1.txt','w',encoding= 'utf-8') as f:
        j.dump(lst,f)
    with open('d:json1.txt', 'r', encoding='utf-8') as f:
        print(j.load(f))

    ['kill', 'nwc', 'hello word', 'china']

    pickle模块:用到的属性与json模块一样都为dumpdumps、loadloads,使用的方法一致,不同的是pickle模块可以序列化函数等对象,而json模块无法直接序列化函数

    序列化函数

    import pickle as j
    def func():
        print('hello world!')
    with open('d:json3.txt','wb') as f:
        j.dump(func,f) #序列化函数并存储在文件中
    with open('d:json3.txt','rb') as f:
        aa = j.load(f) #反序列化函数并赋给aa
        aa()    #调用函数   

    hello world!

  • 相关阅读:
    移动端解决fixed和input弹出虚拟键盘时样式错位
    JS的面向对象
    js计算两个时间范围间的间隔秒数
    使用js过滤字符串前后的空格
    C#时间格式-摘自http://www.cnblogs.com/xiaogongzhu/p/3825600.html
    [dp/贪心]435. 无重叠区间-----经典问题
    【dp】Leetcode面试题 17.16. 按摩师
    [dp]Leetcode.376.摆动序列
    Leetcode 945 使数组唯一的最小增量
    LeetCode 365.水壶问题
  • 原文地址:https://www.cnblogs.com/anner-nie/p/8452160.html
Copyright © 2020-2023  润新知