• json & pickle数据序列化


    序列化:把内存中的数据对象变成字符串

    info = {
        'name':'tom',
        'age':22
    }
    
    f = open("test.txt","w")
    f.write(str(info))
    f.close()

    反序列化:从硬盘中把数据加载到内存

    f = open("test.txt","r")
    
    data = eval(f.read())
    f.close()
    print(data['age'])

    json方式

    import json
    
    info = {
        'name':'tom',
        'age':22
    }
    
    f = open("test.txt","w")
    f.write(json.dumps(info))
    f.close()
    import json
    
    f = open("test.txt","r")
    
    data = json.loads(f.read())
    print(data["age"])

    json只能处理字典,列表,字符串等简单的数据类型,因为json适用于不同语言的数据交互,每种语言都有这些基本的数据类型,只能处理这些简单的

    pickle可以处理复杂的数据类型,如函数,类,但是不能跨语言,只能用于python

    import pickle
    
    def sayhi(name):
        print('hello,',name)
    
    info = {
        'name':'tom',
        'age':'22',
        'func':'sayhi'
    }
    
    f = open("test.txt","wb")
    f.write(pickle.dumps(info))
    f.close()
    import pickle
    
    def sayhi(name):     # 需要再把函数拷贝到这里来,运行结果才不会出过错,上面的代码把内存地址序列化到文件中,反序列化的时候,就没有内存地址了,因为sayhi函数的内存地址伴随着程序执行完后,内存地址就被释放掉了,这个函数对象就找不到了,所以也就无法重新导入了,会报错
        print('hello,',name)
    
    f=open("test.txt","rb")
    
    data=pickle.loads(f.read())
    print(data["func"]("tom"))
  • 相关阅读:
    抽象类abstract
    final关键字特点
    继承ExtendsFour
    继承(继承中构造方法的关系)
    继承ExtendsTwo-super&this
    继承ExtendsOne
    静态
    构造方法与setXxx方法
    15.8
    15.7
  • 原文地址:https://www.cnblogs.com/Ryans-World/p/7275172.html
Copyright © 2020-2023  润新知