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'
  • 相关阅读:
    学Java需要了解的linux系统和unix系统
    51Nod 1649: 齐头并进(最短路)
    51Nod 1694: 两条路径(图论)
    The Preliminary Contest for ICPC Asia Shanghai 2019
    牛客练习赛52 A:数数(快速幂)
    The Preliminary Contest for ICPC Asia Shenyang 2019
    The 2019 Asia Nanchang First Round Online Programming Contest
    2019 年百度之星·程序设计大赛
    2019中国大学生程序设计竞赛(CCPC)
    2019 年百度之星·程序设计大赛
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/10783757.html
Copyright © 2011-2022 走看看