3

我想编写一个函数'backup(filename)'来存储当前 Python 环境下的所有工作数据(对象?),并'restore(filename)'再次恢复数据/对象。就像 R 的save.image(file="workspace21.RData")and 一样load(file="workspace21.RData"),可以对系统进行快照。

如何编写“备份”和“恢复”?或者是否有任何软件包可以做到这一点?

4

3 回答 3

3

有点开箱即用,但如果这很重要并且您确实需要完整的解决方案,您可以在虚拟机中运行 python 并使用快照来保存会话状态。是否实用取决于您的用例。

于 2013-07-11T09:33:20.360 回答
2

pickle 模块似乎是一个解决方案,但它并不能真正为您保存整个环境。试试这个:

import pickle

def backup(fileName):
    pickle.dump(globals(), open(fileName,'w'), pickle.HIGHEST_PROTOCOL)

def restore(fileName):
    globals().update(pickle.load(open(fileName,"rb"))) 

这将不起作用,因为模块对象不可提取。您还将遇到打开文件描述符和其他对象的问题。有关(部分)解决方案,请参阅此问题的答案:

如何保存当前 python 会话中的所有变量?

因此,虽然您无法为您的问题找到一个通用的解决方案,但如果有帮助,您可以使用上面的代码片段作为起点,编写一些可以保存您的一些(全局)对象的东西。

于 2013-07-11T08:49:34.187 回答
0

你应该看看泡菜文档。你还有一个例子可以帮助你做你想做的事。

于 2013-07-11T08:46:34.413 回答