TypeError:无法腌制生成器对象 [英] TypeError: can't pickle generator objects

查看:131
本文介绍了TypeError:无法腌制生成器对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将某些结果写到泡菜文件上,如下所示:

I am trying to write some result on to pickle file as below:

raw_X = (self.token_ques(text) for text in training_data)
with open('/root/Desktop/classifier_result.pkl', 'wb') as handle:
    pickle.dump(raw_X, handle)

错误:

    raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle generator objects

任何帮助都是可观的.

推荐答案

当您要腌制数据时不要使用生成器表达式.改用列表推导,或在生成器上调用list()捕获所有生成的元素以进行酸洗.

Don't use a generator expression when you want to pickle data. Use a list comprehension instead, or call list() on the generator to capture all generated elements for pickling.

例如,以下工作正常:

raw_X = [self.token_ques(text) for text in training_data]
with open('/root/Desktop/classifier_result.pkl', 'wb') as handle:
    pickle.dump(raw_X, handle)

与之一样:

raw_X = (self.token_ques(text) for text in training_data)
with open('/root/Desktop/classifier_result.pkl', 'wb') as handle:
    pickle.dump(list(raw_X), handle)

这篇关于TypeError:无法腌制生成器对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆