【问题标题】:Save Workspace - save all variables to a file. Python doesn't have it)保存工作区 - 将所有变量保存到文件中。 Python 没有)
【发布时间】:2011-03-02 06:16:39
【问题描述】:

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

【问题讨论】:

标签: python serialization


【解决方案1】:

这是一个旧线程,但我认为无论如何我都应该把它扔掉 - Spyder Scientific Python 开发环境允许您通过 Variable explorer 做到这一点。 Save data 有一个按钮,可将您的整个工作区打包在一个 .spydata 文件中,您可以稍后重新加载。当您在项目之间切换时,它就像一个魅力!

【讨论】:

    【解决方案2】:

    我不同意在 Matlab 中保存变量是一个环境函数的说法。 matlab 中的“保存”语句是一个函数,是 matlab 语言的一部分,而不仅仅是一个命令。这是一个非常有用的功能,因为您不必担心文件 i/o 的琐碎细节,它可以处理来自标量、矩阵、对象、结构的各种变量。

    【讨论】:

      【解决方案3】:

      既然您说的是 Matlab,您可能想尝试一下 IPython,它是一种 Python 外壳,提供的功能比您在执行 Python 时获得的标准解释器外壳要多得多。

      其中一个功能是能够加载/保存工作区会话、从会话输入中创建宏等,这可能更像您在 Matlab 中所使用的(我实际上同时使用了这两种功能,并且发现 IPython 更加优雅, 但 YMMV):

      http://ipython.scipy.org

      【讨论】:

        【解决方案4】:

        PiCloud 已经实现了一个更高级的泡菜,但我找不到代码。我看到了poster session

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

        【讨论】:

        • 现在获取 picloud 代码要容易得多——它在 pypi 中,所以“pip install cloud”可以工作。请参阅stackoverflow.com/a/16891169/1264797 以获取酸洗任意 Python 代码及其依赖项的一个示例。
        【解决方案5】:

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

        【讨论】:

        • 感谢您的回复。 cPickle 可以很好地处理简单的变量,但我有一个 50mb 的大数据库。出了什么问题我在这里描述了stackoverflow.com/questions/3004792/… - 不幸的是我没有得到答案,所以我被卡住了。我需要保存列表,当我这样做时它不会加载,因为这个错误。所以我正在寻找另一种方式。
        • 看来您的问题与 Pickle 无关,而是与您的代码隐式依赖的某个库有关。我会尝试用我的想法在原始线程中回复你,但它肯定与 pickle 无关,尽管酸洗(或一般序列化)大型数据集(50mb 是用于序列化的巨大数据集)不是一个好主意,你可能需要寻找替代方案。您是否需要研究 MongoDB 或 CouchDB 等文档存储来以 JSON 格式存储数据?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-17
        • 2015-09-26
        • 1970-01-01
        • 2011-02-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多