Python中 pickle 模块的 dump() 和 load() 方法详解

        Python 的 pickle 模块用于实现二进制序列化和反序列化。一个对象可以被序列化到文件中,然后可以从文件中恢复。

(1)pickle.dump()

  • 定义: pickle.dump(obj, file, protocol=None, fix_imports=True, buffer_callback=None) 将 Python 对象序列化并写入到文件对象。

  • 参数:

    • obj (必需,任意 Python 对象): 要被序列化的对象。
    • file (必需,file object): 一个具有 write() 方法的文件类对象,pickle 数据将被写入到这个对象中。
    • protocol (可选,整数): 指定 pickle 使用的协议版本,可以是 0 到最高支持的协议。默认是默认的协议。
    • fix_imports (可选,布尔值): 如果为 True,并且 protocol 小于 3,pickle 将尝试将新的 Python 3.x 名称映射到 Python 2.x 中的模块名称。
    • buffer_callback (可选,callable): 用于优化大型对象序列化的回调函数。
  • 返回值: 无返回值。

  • 用途: 将 Python 对象序列化保存到文件中。

  • 代码示例:

    import pickle
    
    # 假设我们有一个字典对象
    data = {'a': [1, 2.0, 3, 4+6j],
            'b': ('string', u'Unicode string'),
            'c': None}
    
    # 打开一个文件用于写入
    with open('data.pickle', 'wb') as f:
        # 将字典对象序列化并保存到文件
        pickle.dump(data, f)
    

    (2)pickle.load()

  • 定义: pickle.load(file, *, fix_imports=True, encoding='ASCII', errors='strict', buffers=None) 从文件对象中读取序列化的数据,并将其反序列化为 Python 对象。

  • 参数:

    • file (必需,file object): 一个具有 read() 和 readline() 方法的文件类对象,将从该对象中读取并反序列化 pickle 数据。
    • fix_imports (可选,布尔值): 是否为了兼容 Python 2.x 修复导入问题。
    • encoding (可选,字符串): 用于解码 8 位字符串的编码。
    • errors (可选,字符串): 设置如何处理编解码错误。
    • buffers (可选,列表): 包含用于优化序列化的缓冲区的列表。
  • 返回值: 反序列化后的 Python 对象。

  • 用途: 从文件中恢复 Python 对象。

  • 代码示例:

    import pickle
    
    # 打开含有序列化数据的文件
    with open('data.pickle', 'rb') as f:
        # 读取并反序列化数据
        data_loaded = pickle.load(f)
        print(data_loaded)
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

实名吃香菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值