是否可以将python pickle对象存储为类中的字符串?

时间:2017-09-04 20:50:48

标签: python pickle

我想对我的(python)程序的一个功能进行一些测试,这个功能计算量非常大。我可以运行代码,将输出存储在pandas.DataFrame中,挑选df并使用我的包进行分发,以便用户可以运行测试。但是我认为这违背了单元测试的原则,即测试应该独立于外部源和自包含。

另一个想法是,如果我将pickle文件作为字符串存储在可导入的python类中,然后动态编写pickle文件并在测试后清理它。这可能吗?如果可以,我该怎么做?

以下是一小段代码,只需在当前工作目录中将df写入pickle.pickle即可。

import pickle
import os    
import pandas

df = pandas.DataFrame([1,2,3,4,5,6])
filename = os.path.join(os.getcwd(), 'pickle.pickle')
df.to_pickle(filename)

那么有可能以某种方式获得pickle的字符串版本,以便我可以将它存储在类中吗?

1 个答案:

答案 0 :(得分:1)

  

然后可能以某种方式得到一个字符串版本   泡菜,以便我可以把它存放在一个班级?

只需阅读完整文件:

with open(filename, "rb") as f:
    data = f.read()

然后,如果您需要,可以使用loads

取消它
unpickled = pickle.loads(data)