保存工作区 - 将所有变量保存到文件中。 Python没有它)

时间:2010-06-10 15:58:00

标签: python serialization

我无法理解。非常简单,功能明显: 你有任何编程语言的代码,你运行它。在此代码中,您生成变量,而不是使用一个命令将它们(值,名称,即所有内容)保存到文件中。当它被保存时您可以使用简单的命令在您的代码中打开这样的文件。 它在matlab中工作得很完美(保存工作区,加载工作区) - 在python中有一些奇怪的“pickle”协议,它一直产生错误,而我想要做的就是保存变量,并在另一个会话中再次加载它(?? ???) F.E.你不能用变量保存类(在Matlab中没有问题) 你不能在cPickle中加载数组(但你可以保存它们(?????)) 为什么不让它更容易? 有没有办法用值保存当前变量,然后加载它们?

5 个答案:

答案 0 :(得分:2)

您所描述的是Matlab环境功能而非编程语言。 您需要的是一种存储某些对象的序列化状态的方法,几乎​​可以用任何编程语言轻松完成。在python世界中,pickle是实现它的最简单方法,如果你能提供更多关于它为你产生的错误的细节,那么人们可能会给你更多细节。 通常,对于面向对象的语言(包括python),将状态封装到可以序列化和反序列化的单个对象中然后存储/加载此类的实例总是一种很好的方法。这些对象的酸洗和去除对许多开发人员来说非常有效,因此这必须是您实现的特定内容。

答案 1 :(得分:2)

既然你在谈论Matlab,你可能想要试用IPython,这是一个Python的shell,提供比执行Python时得到的标准解释器shell更多的功能。

这个功能包括加载/保存工作区会话,从会话输入等创建宏的能力,这可能更像你在Matlab中习惯的(我实际上使用它们并且发现IPython更优雅,但YMMV):

http://ipython.scipy.org

答案 2 :(得分:1)

PiCloud已经实现了一个发烧友,但我找不到代码。我看到了poster session

通常在Python实例化对象中没有任何一种方法可以重新创建它们,在某些情况下它特别困难(如打开文件),因为它需要几个步骤来重新创建。

答案 3 :(得分:0)

我对在Matlab中保存变量是环境函数的说法提出异议。 matlab中的“save”语句是一个函数,是matlab语言的一部分,而不仅仅是一个命令。这是一个非常有用的函数,因为您不必担心文件i / o的微不足道的细节,它会处理来自标量,矩阵,对象,结构的各种变量。

答案 4 :(得分:0)

这是一个旧线程,但我想还是应该把它扔出去-Spyder Scientific Python开发环境允许您通过Variable explorer做到这一点。 Save data上有一个按钮,用于将整个工作区打包到.spydata文件中,以后可以重新加载。在项目之间切换时,就像魅力一样!