2017-12-03 34 views
0

我正在尝试将list写入二进制文件并稍后再次加载它。我有这个代码:将列表写入二进制文件时的问题

with open('W.bin', mode='wb') as file:         
    file.write(bytearray(model.estimator.intercepts_)) 
file.close() 

其中model.estimator.intercepts_是一个列表。然而,我得到这个错误:

File "LM.py", line 200, in model_training 
    file.write(bytearray(model.estimator.intercepts_)) 
TypeError: an integer or string of size 1 is required 

我不知道我的代码有什么问题吗?谢谢

+2

你有你想要写 –

+0

什么是你的列表中的内容为空值? –

回答

0

这里有两件事出错了。

首先,您的列表必须仅包含字符(大小为1的字符串)或范围在0到256之间的整数以使用bytearray。列表中的某些元素不能满足要求,并且您得到TypeError

其次,你只能写一个字符串到一个文件。如果你需要写任何东西,你应该使用pickle

import pickle 

with open('W.bin', mode='w') as file:         
    pickle.dump(your_array), file) 

,然后读做

with open('W.bin', mode='r') as file:         
    your_array = pickle.load(file) 
+0

我可以有这个小问题。 'mode ='w''将**覆盖**现有文件,对吗? – David

+0

它的确如此,你可以在这里阅读关于打开的不同模式:https://docs.python.org/2/library/functions.html#open 虽然如果你使用pickle,那么追加它就没有意义了到文件。 –