nlp*_*per 12 python generator pickle
我正在尝试将一些结果写入pickle文件,如下所示:
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)
Run Code Online (Sandbox Code Playgroud)
错误:
raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle generator objects
Run Code Online (Sandbox Code Playgroud)
任何帮助都会非常明显.
当您想要pickle数据时,不要使用生成器表达式.改为使用列表推导,或者调用list()生成器来捕获所有生成的元素以进行酸洗.
例如,以下工作正常:
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)
Run Code Online (Sandbox Code Playgroud)
同样如下:
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)
Run Code Online (Sandbox Code Playgroud)
raw_X = (self.token_ques(text) for text in training_data)
Run Code Online (Sandbox Code Playgroud)
这是一个发电机。正如错误所示,我们无法 pickle 生成器。用这个代替。
raw_X=[]
for text in data:
raw_X.append(self.token_ques(text))
raw_X=tuple(raw_X)
Run Code Online (Sandbox Code Playgroud)
然后腌制raw_X。
编辑
这对我有用
import pickle
raw_X=[]
data=[1,2,3,4,5,6,2,0]
for text in data:
raw_X.append(str(text))
print pickle.dumps(raw_X)
Run Code Online (Sandbox Code Playgroud)
我正在使用str()而不是你的函数,而dumps()不是dump().
| 归档时间: |
|
| 查看次数: |
29269 次 |
| 最近记录: |