Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 取消勾选文件时出现值错误_Python_File_Pickle - Fatal编程技术网

Python 取消勾选文件时出现值错误

Python 取消勾选文件时出现值错误,python,file,pickle,Python,File,Pickle,我收到了一个包含两个pickle对象的文件,它是作为.pk文件发送给我的。我被告知它有两个对象,但是,我尝试取消标记这些文件失败 第一个pickle对象包含一个带有罗马数字的成对数字字典,第二个包含带有数字的成对罗马数字字典。我怎样才能分别解开这两本词典 以下是我收到的错误信息,以及我收到的错误信息: import pickle x,y=pickle.load(open("C://Users//Documents//roman.pk", "rb")) print(x,y) 错误消息: Valu

我收到了一个包含两个pickle对象的文件,它是作为.pk文件发送给我的。我被告知它有两个对象,但是,我尝试取消标记这些文件失败

第一个pickle对象包含一个带有罗马数字的成对数字字典,第二个包含带有数字的成对罗马数字字典。我怎样才能分别解开这两本词典

以下是我收到的错误信息,以及我收到的错误信息:

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
将只加载在文件中找到的第一个pickle对象。在您的例子中,这是一个包含两个以上键的字典,因此
x,y=pickle.load(…)
失败,因为它试图将字典的键解压缩到标识符
x
y

相反,您应该
打开
文件一次,然后
从中加载
两次:

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

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

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

e、 g(第1条、第2条)

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

如果您只是将pickle.load加载到单个对象,会发生什么,然后查看它包含什么?其中一本字典?还有别的吗?您还可以尝试在同一个文件上调用
pickle.load
两次(即
打开它一次,然后从中加载两次)。如果我只使用一个变量运行它,那么它会给我一个字典。如果我尝试从它加载两次,它只会给我两次第一个字典。您是否同时使用
load(open(…)
?如果是这样,将重置指向文件开头的指针。您需要打开它一次(理想情况下使用
上下文管理器,请参阅)。抱歉,误解了您的答案。按照您的建议切换了格式,它正在工作!非常感谢
(x,y)=…
x,y=…
完全相同,并且由于相同的原因将失败