【问题标题】:Save instance of Python application [closed]保存 Python 应用程序的实例 [关闭]
【发布时间】:2018-03-27 13:29:54
【问题描述】:

我编写了一个 Python 应用程序,用户可以在其中创建项目,有点像 Word、Photoshop、Solidworks 等。就像这些应用程序一样,我需要用户将他的工作保存在特定于程序的文件中,这样当他打开它,他继续从事他的项目。

我该怎么做? 是否有任何现有的库可以让我这样做?

谢谢。

利亚姆

【问题讨论】:

  • 你描述的是数据文件,不是应用程序
  • 了解 Python 的数据序列化,有很多选择,例如 pickle/shelve(可能不安全)、JSONYAMLXMLProtocol Buffers (可能更多用于网络,但仍然如此),...

标签: python save project end-user


【解决方案1】:

适合你的主要工具是pickle。它在 Python 中是原生的,是所有 Python 对象的序列化方法。见docspickle 的主要问题是如果您使用它来保存包含大量数据的对象。它将保存整个对象,从而保存大文件。

在使用适合工作的设计模式进行规划和实施时,也非常欢迎和首选替代方法。

例如,您可以构建配置对象来跟踪工作并将其保存为JSON 格式。
另一种有利于偏好和状态捕获的语言是XML

但是,在所有设计的方法中,您都需要修改代码,以便它可以根据定义的设置、状态和偏好进行保存和恢复。

以上所有语言都有库支持,JSON 是原生的。

【讨论】:

  • 值得注意的是,pickle 可能不安全,您不应使用它加载不受信任的数据,因为它可能会运行恶意代码。
  • @jdehesa 正确,保存后可能需要加密。
  • 虽然 pickle 用于在 Python 中存储变量和对象,但我怀疑这是 OP 想要或需要的。这是一个关于将数据存储到文件的问题,使用open(可能格式化为 json 或 XML 或其他格式)但是措辞不好。
  • @mr_mo 好的,我正在保存大量数据,我认为使用 XML 会更好,但我怎么能这样做,以便当用户单击项目文件图标时,它会在我的应用程序,而不是记事本?
【解决方案2】:

您需要将它们保存到文件中

with open('Failed.py', 'w') as file:
    file.write('whatever')

Python Save to file

或到数据库 https://wiki.python.org/moin/DatabaseProgramming

或者你可以保存会话

%save current_session ~0/
%save previous_session ~1/

How to save a Python interactive session?

【讨论】:

    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    相关资源
    最近更新 更多