Python:在python脚本中保存pickled对象

时间:2015-10-22 19:10:06

标签: python pickle

我有一个类实例,我使用pickle.dump(instance,outputfile)转储到.pickle文件中。我可以分发脚本和pickle文件并要求用户以pickle文件作为参数运行python脚本,然后我可以使用pickle.load(pickle_file_passed_as_argument)

加载该实例

我可以代替"嵌入"脚本本身里面的pickle文件,然后只是传递脚本?然后,当用户运行脚本时,我可以加载" embedded"对象并使用所有对象的成员函数?

我的问题类似于:

This question

我没有理解那里给出的任何答案,因为他们在没有代码示例的情况下抽象地描述了该怎么做。我不确定如何使用三引号技巧嵌入对象(尽管该问题中的所有答案都提到了这一点)。我之前没有使用过类似三重引号的字符串..

其中一个答案提到使用s=pickle.dumps(objectInstance)后跟pickle.loads(s)并将其与三引号结合以嵌入对象。我到底如何结合"转储,加载三重引号技巧,我没有得到那个部分..

1 个答案:

答案 0 :(得分:2)

answer的含义是对要包含在pickleencode中的数据进行编码:

import pickle
data = dict(a=1,b=2)
pickle.dumps(data).encode('base64')

> 'KGRwMApTJ2EnCnAxCkkxCnNTJ2InCnAyCkkyCnMu\n'

并在您的文件中对其进行解码,以便从源代码中写入的字符串中共享:

import pickle
# data encoded as a string
encoded_data = """KGRwMApTJ2EnCnAxCkkxCnNTJ2InCnAyCkkyCnMu\n"""

# decoding of the data
data = pickle.loads(encoded_data.decode('base64'))
print data

> {'a': 1, 'b': 2}