zoukankan      html  css  js  c++  java
  • python3 pickle模块(序列化和反序列化)

    import pickle
    
    
    """将对象转化为硬盘能识别的bytes的过程被称为序列号。pickle可以把任意python类型的数据转化为字节"""

    print(pickle.dumps("")) print(type(pickle.dumps(""))) print(pickle.dumps([4, 2, 1])) print(type(pickle.dumps([4, 2, 1])))
    b'x80x03Xx03x00x00x00xe4xb8xadqx00.' 
    <class 'bytes'>
    b'x80x03]qx00(Kx04Kx02Kx01e.'
    <class 'bytes'>

    import pickle
    
    
    """将bytes转化为python对象的过程被称为反序列化"""
    print(pickle.loads(b'x80x03Xx03x00x00x00xe4xb8xadqx00.'))
    print(type(pickle.loads(b'x80x03Xx03x00x00x00xe4xb8xadqx00.')))
    
    print(pickle.loads(b'x80x03]qx00(Kx04Kx02Kx01e.'))
    print(type(pickle.loads(b'x80x03]qx00(Kx04Kx02Kx01e.')))
    中
    <class 'str'>
    [4, 2, 1]
    <class 'list'>

    import pickle
    
    
    print(pickle.dumps([4, 2, 1]))  # 序列化
    print(pickle.loads(b'x80x03]qx00(Kx04Kx02Kx01e.'))  # 反序列化
    b'x80x03]qx00(Kx04Kx02Kx01e.'
    [4, 2, 1]

    
    
    import pickle
    
    
    """将序列化后的bytes写入文件"""
    pickle.dump("", open("str2.dat", "wb"))
    pickle.dump([4, 2, 1], open("lst.dat", "wb"))
    import pickle
    
    
    """读取文件中的bytes"""
    print(pickle.load(open("str2.dat", "rb")))
    print(pickle.load(open("lst.dat", "rb")))
    中
    [4, 2, 1]

    import pickle
    
    
    pickle.dump([1, 2, 3], open("lst.bytes", "wb"))  # 把任意类型的数据转化为字节,并保存到文件中
    
    print(pickle.load(open("lst.bytes", "rb")))  # 从文件中读取字节数据,并转换为对应的python数据
    [1, 2, 3]

    """只有字符串类型的转化为字节使用encode"""
    print([4, 2, 1].encode("utf-8"))
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-134-f5e7d7f2d811> in <module>()
          1 """只有字符串类型的转化为字节使用encode"""
    ----> 2 print([4, 2, 1].encode("utf-8"))
    
    AttributeError: 'list' object has no attribute 'encode'
    import pickle
    
    
    """encode和pickle.dumps的对字符串进行转字节结果是不一样的。"""
    print(pickle.dumps(""))
    print("".encode("utf-8"))
    b'x80x03Xx03x00x00x00xe4xb8xadqx00.'
    b'xe4xb8xad'
  • 相关阅读:
    设计模式之命令模式
    设计模式之访问者模式
    ES6入门之Generator函数
    ES6入门之Iterator和for...of
    c# TcpClient简易聊天工具
    Mvc Action可以通过jsonp方式调取
    Webbrowser 在web项目中的使用
    关于java post get请求Demo (请求c#iis接口)
    Jquery 引擎模板 -template详解
    Redis在windows下安装过程
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/10783757.html
Copyright © 2011-2022 走看看