【问题标题】:what is "file_like_object", what is "file"; pickle.load() and pickle.loads()什么是“file_like_object”,什么是“文件”; pickle.load() 和 pickle.loads()
【发布时间】:2018-01-29 10:19:01
【问题描述】:

我正在弄清楚pickle.load()pickle.loads() 之间的区别。有人说pickle.load()处理的对象是什么类型的“file_like_object”,而pickle.loads()对应的是“file object”。

【问题讨论】:

  • 您寻找的所有信息都可以从the documentation 轻松访问。
  • 我投票决定将此问题作为离题结束,因为它可以从文档中轻松获得。

标签: python pickle data-processing


【解决方案1】:

您选择使用哪个函数取决于您加载腌制数据的对象:


pickle.loads 用于从bytes 字符串加载腌制数据。 loads 中的“s”指的是在 Python 2 中,数据是从 string 加载的。

例如:

import pickle

with open("myobj.pickle", "rb") as f:
    rawdata = f.read()

myobj = pickle.loads(rawdata)

pickle.load 用于从类文件对象加载腌制数据。这是任何行为类似于文件的对象 - 在这种情况下,这意味着它有一个返回 bytesread() 方法。

例如:

import pickle

with open("myobj.pickle", "rb") as f:
    myobj = pickle.load(f)

同样的约定适用于 pickle 库中的 dump/dumps 函数,以及 json 模块等。

【讨论】:

  • 所以这与我们如何转储对象无关?我的意思是,我们不必仅在 .dump() 对象上使用 .load() ,我们也可以在 .dumps() 对象上使用 .load() 吗?使用 .dump()/.load() 和 .dumps()/.loads() 没有一对一的映射,唯一重要的是要加载的文件类型、字节字符串或类似文件。我说的对吗?
猜你喜欢
  • 1970-01-01
  • 2018-01-08
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 2019-08-17
  • 2013-07-19
  • 2012-05-04
相关资源
最近更新 更多