序列化与反序列化

序列化(pickling)
  把变量从内存中变成可存储或传输的过程

反序列化(unpickling)
  把变量内容从序列化的对象重新读到内存里的过程

序列化的意义
  在程序运行过程中,所有变量都在内存中随时被修改
  但一旦程序结束,变量所占内存就被操作系统全部回收,所做的修改全部丢失,要想内存恢复到修改后状态只能重新运行程序
  序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上

实例

  import pickle        ##引入pickle模块
    
    d = dict(name='Bob', age=20, score=88)
    bytes = pickle.dumps(d)        ##pickle.dumps()方法把任意对象序列化成一个bytes
                                ##bytes -> b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x14X\x05\x00\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u.'
    d1 = pickle.loads(bytes)    ##pickle.loads()方法把bytes反序列化出对象
    print(d1)
        
    ##################################################
    
    import pickle
    d = dict(name='Bob', age=20, score=88)
    f = open('dump.txt', 'wb')
    pickle.dump(d, f)     ##直接把对象序列化后写入一个file-like Object
    f.close()

    f1 = open('dump.txt', 'rb')
    d1 = pickle.load(f)      ##用pickle.load()方法从一个file-like Object中直接反序列化出对象
    f1.close()    
    print(d1)

 

注意:

  不同版本的Python彼此都不兼容,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系
  反序列化后的对象是一个新的对象

posted on 2019-03-21 15:22 立业的博客 阅读() 评论() 编辑 收藏

版权声明:本文为shiliye原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/shiliye/p/10571935.html