保存Python中的对象列表

时间:2017-07-05 15:18:09

标签: python json pickle statsmodels

我运行了5,693次回归并希望保存输出,因为它需要几个小时才能运行。我在名为res的列表中捕获了它,对象(如果重要)是来自包MarkovRegressionResultsWrapper的{​​{1}}对象。

我认为要走的路是泡菜。我保存到私人目录供我自己使用,所以安全性不是问题,JSON似乎不适用于对象(我是新的,所以这可能是错的?)。

这是一个我发现工作正常的例子:

statsmodels

但是,当我使用完全相同的代码,但保存我的列表res时,它会出错:

import pickle
a = ['test value','test value 2','test value 3']

file_Name = "testfile"
# open the file for writing
fileObject = open(file_Name,'wb') 

# this writes the object a to the
# file named 'testfile'
pickle.dump(a,fileObject)   

# here we close the fileObject
fileObject.close()

我在Macbook Pro上使用Python 3.6和Jupyter Notebook。 file_Name = "testfile" # open the file for writing fileObject = open(file_Name,'wb') # this writes the object a to the # file named 'testfile' pickle.dump(res,fileObject) # here we close the fileObject fileObject.close() --------------------------------------------------------------------------- OSError Traceback (most recent call last) <ipython-input-43-ab4800ac1a51> in <module>() 7 # this writes the object a to the 8 # file named 'testfile' ----> 9 pickle.dump(res,fileObject) 10 11 # here we close the fileObject OSError: [Errno 22] Invalid argument a都是类型列表,因此唯一不同的是列表包含的内容。为什么我收到此错误?这是保存此对象列表的最佳方法,还是应该做一些不同的事情?

1 个答案:

答案 0 :(得分:2)

@ChristianDean在评论中提供了答案。这与Mac OSX上的Python 3.6中的pickle中的已知错误有关。 Python 3 - Can pickle handle byte objects larger than 4GB?