• python学习第四章之json与pickle数据序列化


    1.终于学到json了,简直是万分期待

    2.json序列化:json.dumps()

     json反序列化:json.loads()

    json对字典、列表、字符串起作用,可以在不同语言间进行交互。

    pickle只支持python语言,Java只认识json,一般是dump一次,对应的load一次

    3.(1)使用json将字典的一个内容存入文本中,

    import json
    info={
        'name':'alex',
        'age':22
    }
    f=open("test.text","w")
    print(json.dumps(info))
    f.write(json.dumps(info))
    f.close()
    

     运行后,字典中的内容已经写入到test.text文本中,这时如果要读取改文本中的内容,就要用到反序列化:

    import json
    f=open("test.text","r")
    data=json.loads(f.read())
    print(data['age'])
    

     这时读取到的age为22

    (2)如果在字典中有函数的内存地址,这时就要用到pickle,其他与json一样

    import pickle
    def sayhi(name):
        print("hello",name)
    info={
        'name':'alex',
        'age':22,
        'func':sayhi
    }
    f=open("test.text","wb")
    print(pickle.dumps(info))
    f.write(pickle.dumps(info))
    f.close()
    

     反序列为:

    import pickle
    def sayhi(name):
        print("hello", name)
        print("hello2",name)
    f=open("test.text","rb")
    data=pickle.loads(f.read())
    print(data['func']("wu"))
    

     (3)而在pickle的序列中,f.write(pickle.dumps(info))与pickle.dump(info,f)是一样的,那么也可以写成如下形式

    import pickle
    def sayhi(name):
        print("hello",name)
    info={
        'name':'alex',
        'age':22,
        'func':sayhi
    }
    f=open("test.text","wb")
    pickle.dump(info,f)     #与f.write(pickle.dumps(info))一样
    f.close()
    

     同理反序列化也一样,

    import pickle
    def sayhi(name):
        print("hello", name)
        print("hello2",name)
    
    f=open("test.text","rb")
    data=pickle.load(f)   #data=pickle.loads(f.read())
    print(data['func']("wu"))
    

     好的,完毕

  • 相关阅读:
    Entity Framework 学习高级篇1—改善EF代码的方法(上)
    Entity Framework 学习高级篇2—改善EF代码的方法(下)
    Entity Framework 学习中级篇5—使EF支持Oracle9i
    Window API 之 PostMessage (消息投递)
    从image/xpng谈ContentType(s)
    SQL中使用 N 前缀的原因
    Delphi初浅入门笔记之一 :ObjectPascal基础
    写入DLL文件
    SQL Server 2005和SQL Server 2000中bit类型的区别
    HTML <a> 标签的 target 属性说明
  • 原文地址:https://www.cnblogs.com/wuxiaoru/p/11384575.html
Copyright © 2020-2023  润新知