当前位置: 首页 > 知识库问答 >
问题:

如何使用pickle保存dict(或任何其他Python对象)?

凌蕴藉
2023-03-14

我已经浏览了Python文档提供的信息,但我仍然有点困惑。有人可以发布示例代码来编写一个新文件,然后使用pickle将字典转储到其中吗?

共有3个答案

闾丘玮
2023-03-14
# Save a dictionary into a pickle file.
import pickle

favorite_color = {"lion": "yellow", "kitty": "red"}  # create a dictionary
pickle.dump(favorite_color, open("save.p", "wb"))  # save it into a file named save.p

# -------------------------------------------------------------
# Load the dictionary back from the pickle file.
import pickle

favorite_color = pickle.load(open("save.p", "rb"))
# favorite_color is now {"lion": "yellow", "kitty": "red"}
柳仲卿
2023-03-14
import pickle

your_data = {'foo': 'bar'}

# Store data (serialize)
with open('filename.pickle', 'wb') as handle:
    pickle.dump(your_data, handle, protocol=pickle.HIGHEST_PROTOCOL)

# Load data (deserialize)
with open('filename.pickle', 'rb') as handle:
    unserialized_data = pickle.load(handle)

print(your_data == unserialized_data)

最高_协议的优点是文件变得更小。这使得取消勾选有时要快得多。

重要提示:泡菜的最大文件大小约为2GB。

import mpu
your_data = {'foo': 'bar'}
mpu.io.write('filename.pickle', data)
unserialized_data = mpu.io.read('filename.pickle')
  • CSV:超简单格式(读取

对于您的应用程序,以下内容可能很重要:

另请参见:数据序列化格式的比较

如果您正在寻找一种生成配置文件的方法,您可能需要阅读我的短文《Python中的配置文件》

邢宏浚
2023-03-14

试试这个:

import pickle

a = {'hello': 'world'}

with open('filename.pickle', 'wb') as handle:
    pickle.dump(a, handle, protocol=pickle.HIGHEST_PROTOCOL)

with open('filename.pickle', 'rb') as handle:
    b = pickle.load(handle)

print(a == b)

上述解决方案没有任何特定于cript对象的内容。这种相同的方法将适用于许多Python对象,包括任意类的实例和任意复杂的数据结构嵌套。例如,用这些行替换第二行:

import datetime
today = datetime.datetime.now()
a = [{'hello': 'world'}, 1, 2.3333, 4, True, "x", 
     ("y", [[["z"], "y"], "x"]), {'today', today}]

也会产生True的结果。

有些物体由于其本身的性质而无法腌制。例如,对包含打开文件句柄的结构进行pickle是没有意义的。

 类似资料:
  • 问题内容: 我已经仔细阅读了Python文档提供的信息,但仍然有些困惑。有人可以张贴示例代码来编写新文件,然后使用pickle将字典转储到其中吗? 问题答案: 尝试这个:

  •   Pickling 是将 Python对象 转换为 字节流 的过程, 通常称为序列化。Unpickling 是逆操作,将 字节流 转换成 python对象, 通常称为反序列化。python中我们用pickle.dump 和 pickle.load 来实现序列化和反序列化。 ## Pickling import pickle data =  {     'Names': ["Karl","R

  • 首先,我像这样扩展抽象用户: 然后参考如下其他模型: 这是形式: 这是视图: 我的问题是: > < li> 如何显示全名字段 以及如何通过应用程序数据的视图将这些字段保存到MyModel模型中的成员字段中? 更新 我更新了AbstractUser模型,因为我忘记添加first_name

  • 下面是我写的JUNIT测试,用来比较从Json字符串创建的对象(实际)和在测试函数中创建的对象(预期)。 但是当我执行assertEquals()时,它没有通过测试。原因可能是什么? 我的销售渠道课程是:

  • 问题内容: 不幸的是,简单地返回’{}’,这意味着a在还原后变成空对象。 我发现es6-mapify允许在Map和普通对象之间进行上/下转换,所以这可能是一种解决方案,但是我希望我仅需要使用外部依赖项来持久保存我的地图。 问题答案: 假设您的键和值都是可序列化的, 应该管用。反之,使用

  • 问题内容: 我需要附加一个泡菜文件(因为我一次都没有整个字典)。为此,我编写了以下代码: 但是,当我加载泡菜文件时,我在那里找不到字典f的值? 有人可以建议我应该如何添加一个泡菜文件吗? 另外,像“ dbm”这样的数据库无法满足我的需求,因为我正在Windows上工作 问题答案: 腌制流完全是独立的,因此解腌将一次解腌一个对象。 因此,要释放多个流,应重复释放该文件,直到得到EOFError为止: