zoukankan      html  css  js  c++  java
  • 数据序列化

    数据序列化:通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长。并且需要时可以再次将这个对象读取出来。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!

  • 相关阅读:
    Valid Palindrome
    Linux经常使用命令(十七)
    JavaSE入门学习8:Java基础语法之方法
    Eclipse导入Maven项目出现错误:Unsupported IClasspathEntry kind=4
    HTTP ERROR 503
    演示账号激活的过程:注冊——>向指定邮箱发送邮件——>用户登录邮箱,激活账号
    Oracle update+with的使用场景
    代理模式(静态代理+动态代理)——JAVA
    BZOJ1611: [Usaco2008 Feb]Meteor Shower流星雨
    BZOJ1724: [Usaco2006 Nov]Fence Repair 切割木板
  • 原文地址:https://www.cnblogs.com/anner-nie/p/8452160.html
Copyright © 2011-2022 走看看