gpt4 book ai didi

python - unpickling 命名元组时出错

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:37 25 4
gpt4 key购买 nike

全局变量 Agree 是在所有函数外部定义的命名元组:

Agree = collections.namedtuple('Agree', ['kappa', 'alpha','avg_ao'], verbose=True)

从此函数返回命名元组:

def getagreement(task):
return Agree(kappa=task.kappa(),alpha=task.alpha(),avg_ao=task.avg_Ao())

在这里调用并 pickle :

     future_dict[executor.submit(getagreement,task)]=frozenset(annotators)
...
detaildata[future_dict[future]]=future.result()

cPickle.dump(detaildata,open(os.path.dirname(jsonflist[0])+'\\out.picl','w'))

Unpickling 出现错误:

c=cPickle.load(open(subsdir))
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Agree'

文件反汇编:

 pickletools.dis(f)
126: c GLOBAL '__builtin__ tuple'
147: p PUT 9
151: ( MARK
152: F FLOAT 0.22320438764335693
174: F FLOAT 0.21768346003098427
196: F FLOAT 0.7004133685136325
218: t TUPLE (MARK at 151)
219: t TUPLE no MARK exists on stack
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:\Python27\Lib\pickletools.py", line 2009, in dis
raise ValueError(errormsg)
ValueError: no MARK exists on stack

pickle 和 cPickle 都会给出类似的错误。

最佳答案

我猜测您在一个模块中定义了 Agree,并尝试在未定义 Agree 的不同模块中加载数据。尝试如下所示的操作,如果有效,则将定义的命名元组导入到从中加载数据的模块中。

import collections
import cPickle
Agree = collections.namedtuple('Agree', ['kappa', 'alpha','avg_ao'], verbose=True)
c = cPickle.load(open(subsdir))

关于python - unpickling 命名元组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18683919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com