Python数据存储:pickle模块的使用讲解

   在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间。Python提供的pickle模块就很好地解决了这个问题,它可以序列化对象并保存到磁盘中,并在需要的时候读取出来,任何对象都可以执行序列化操作。

1.pickle.dump(obj, file, protocol=None, *, fix_imports=True)

【作用】将obj的pickled对象写入打开的文件对象file中

obj:是需要序列化处理的对象

file:文件对象,必须有一个write()方法,该方法接受一个字节参数。因此,它可以是为二进制文件打开的文件对象写入、io.BytesIO实例或其他自定义对象。

protocol:告诉pickler对象使用给定的协议,它能够支持的协议有0、1、2、3、4。违约协议是3,为Python 3设计的向后不兼容协议。貌似是为了兼容性考虑的一个参数,不常用。

fix_imports:如果*fix_imports*为真且协议小于3,pickle将尝试将新的Python 3名称映射到Python中使用的旧模块名称2,这样pickle数据流可以用Python 2读取。也是为了兼容性考虑,这里不做赘述了。默认设置可以达到兼容需求。

pickle.dumps(obj, protocol=None, *, fix_imports=True)

【作用】将对象的pickled表示形式(obj)返回为bytes对象。

参数同pickle.dump方法

2.pickle.load(file, *, fix_imports=True, encoding='ASCII', errors='strict')

这里并没有protocol参数,这是因为pickle的协议版本是自动检测的,超过pickled对象的字节数表示将被忽略。

【作用】从存储在文件中的pickle数据读取并返回对象

file:必须有两个方法,一个read(intNumber)方法和一个readline()方法。两个方法都应该返回字节,因此该参数可以是打开要读取的二进制文件对象、io.BytesIO对象或任何符合条件的自定义对象。

fix_imports、encoding、errors:这三个参数可选,用于控制pickle流的兼容性支持。如果fix-imports为真,pickle将尝试将旧的Python 2名称映射到Python 3中使用的新名称。encoding、errors参数告诉pickle如何解码8位字符串,默认解码方式和容错机制为“ASCII”和“strict”。也是为了兼容性考虑,不常用。

pickle.loads(data, *, fix_imports=True, encoding='ASCII', errors='strict')

【作用】从给定的pickle数据读取并返回对象。

参数作用用法参照pickle.loads()方法。

(3)pickle.dumps(obj[, protocol])

       函数的功能:将obj对象序列化为string形式,而不是存入文件中。

       参数讲解:

  • obj:想要序列化的obj对象。
  • protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

(4)pickle.loads(string)

       函数的功能:从string中读出序列化前的obj对象。

       参数讲解:

  • string:文件名称。

     【注】 dump() 与 load() 相比 dumps() 和 loads() 还有另一种能力dump()函数能一个接着一个地将几个对象序列化存储到同一个文件中,随后调用load()来以同样的顺序反序列化读出这些对象。

 

 

 


 

参考:https://www.cnblogs.com/fmgao-technology/p/9078918.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值