解压文件时出现值错误

Value Error when unpickling a file

我收到了一个包含两个腌制对象的文件 - 它是作为 .pk 文件发送给我的。有人告诉我它有两个对象,但是,我尝试解开这些文件的尝试没有成功。

第一个 pickled 对象包含数字对及其罗马数字的字典,第二个腌制对象包含罗马数字对及其数字的字典。如何分别解开这两个词典?

下面是我收到的错误消息:

import pickle
x,y=pickle.load(open("C://Users//Documents//roman.pk", "rb"))
print(x,y)

错误信息:

ValueError: too many values to unpack (expected 2)

pickle.load 只会加载它在文件中找到的第一个腌制对象。在您的情况下,这是一个具有两个以上键的字典,因此 x, y = pickle.load(...) 失败,因为它试图将 字典的键 解压缩到标识符 xy.

相反,您应该 open 文件一次,load 两次:

with open("...roman.pk") as file_:
    first_dict = pickle.load(file_)  # file pointer is now at end of first object
    second_dict = pickle.load(file_)  # read in second object

或者,鼓励向您提供文件的人将这两个词典放入一个对象中,例如元组 (first_dict, second_dict)pickle 单个对象;这比依赖确切知道文件中有多少腌制对象要容易得多。

pickle.load 应该将数据结构加载到一个参数中。 如果 roman.pk 中有 2 个词典,这取决于 2 个词典的分组方式

例如 (dict1, dict2)

在这种情况下: 您可能想尝试: (x,y)= pickle.load(开("C://Users//Documents//roman.pk", "rb")) 打印长度(x) 打印长度(y) 检查它是否正确加载