• 序列化pickle模块


    1.pickle模块

    pickle.dumps() 和pickle.loads()

    import pickle
    
    f = open('112.pkl','w')
    a = {'name':2,2:3,3:4,4:5}
    print(pickle.dumps(a),type(pickle.dumps(a)))
    
    import pickle
    
    
    a = {'name':2,2:3,3:4,4:5}
    
    b = pickle.dumps(a)
    print(pickle.loads(b))
    

    pickle.dump() 和pickle.load() 这里和json的区别在于pickle直接转换成字节(bytes),json直接转换成字符串。pickle应用wb,rb这些打开二进制文件。  

    import pickle
    
    f = open('112.pkl','wb')
    a = {'name':2,2:3,3:4,4:5}
    
    b = pickle.dump(a,f)
    
    print(b,type(b))
    import pickle
    
    f = open('112.pkl','rb')
    
    b = pickle.load(f)
    
    print(b)
    

      

    2.那么json和pickle这么相似,到底为什么还要存在两个类型差不多的模块?

    ①·因为json模块只能用于str,dict,tuple,list,int.只能将这些数据类型转换成字符串。

     而pickle可以将所有的数据类型转换为字符串,包括函数(下面有举例)

    ②·但是json模块可以用于跨语言传递字符串,而pickle只能在python里使用,语言局限性大。

    用json转换函数,报错函数不可序列化。

    import pickle,json
    
    def sayhi():
        print("hello world")
    
    f = open('113.json','w')
    
    a = json.dump(sayhi,f)
    
    # TypeError: Object of type 'function' is not JSON serializable
    

    用pickle转换函数,不会报错

    import pickle,json
    
    def sayhi():
        print("hello world")
    
    f = open('113.json','wb')
    
    a = pickle.dump(sayhi,f)
    

      

      

      

      

  • 相关阅读:
    Intern Day16
    粉红
    开始还房贷!
    Sonnet-十四行诗
    CSS兼容大全
    TCL电视直播软件
    《Linux权威指南》阅读笔记(2)
    《Linux权威指南》阅读笔记(1)
    Linux crontab定时执行任务 命令格式与详细例子
    linux下find查找命令用法
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8862360.html
Copyright © 2020-2023  润新知