zoukankan      html  css  js  c++  java
  • 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"))
  • 相关阅读:
    shiro实战系列(三)之架构
    shiro实战系列(二)之入门实战续
    ShopNC B2B2C多用户商城2014商业版,带微商城
    开源 SHOPNC B2B2C结算营运版 wap IM客服 API 手机app 短信通知
    PHP5.3下加速器ZendGuardLoader安装 (LNMP/lnmpa)
    XAMPP + Xdebug+Zend Studio
    magento 12 配置安装教程
    C#控件一览表
    GetXamarin.xambe
    新建电子监控点与测速点
  • 原文地址:https://www.cnblogs.com/Ryans-World/p/7275172.html
Copyright © 2011-2022 走看看