独立 python 应用程序的数据存储

Data storage for standalone python application

我想制作一个 python 程序(带有 PyQt GUI,但我不知道这是否相关)必须保存一些我想在程序关闭时存储的信息。我要存储的信息示例:

  1. 用户可以在文件对话框中搜索文件window。我想在 以前使用的目录 中启动文件对话框 window,即使程序在文件搜索之间关闭。

  2. 用户可以输入自己的类别来对项目进行排序,建立在我预定义的一些类别之上。这些新类别 应该在程序下次启动时可用。

现在我想知道存储此类信息的正确方法是什么。我应该用泡菜吗?一个合适的数据库(我知道一点点 sqlite3,但必须阅读它)?我自己解析的一个简单的文本文件?示例 1 中的数据是一回事,示例 2 中的数据是另一回事。?

另外,无论我使用什么方式存储它,我应该把那个文件放在哪里?

我在上下文中询问我可能希望稍后将我的程序作为独立应用程序提供给其他人(使用 py2app、py2exe 或 PyInstaller)。

现在我只是在我的 .py 文件所在的目录中保存一个 pickle 文件,就像 this answer 推荐的那样,但答案也特别提到:

for a personal project it might be enough.

(强调我的)

如果我想让该程序作为独立应用程序供其他人使用,使用 pickle 也是 "proper, professional" 方式吗?

正如 Moldovan 所说,我认为 SQLite3 在这种情况下是更好的解决方案。

pickle 中存在问题,有时 pickle 格式可以在 python 版本之间更改,使用 sqlite3 有更大的优势。

选择取决于您存储数据的方式,您选择哪种?:

  • 用户应该能够在不使用我的程序的情况下更改它
  • 应该防止用户用我的程序以外的程序更改它

如果您首先考虑部署 JSON 开放标准文件格式,Python 已准备好名为 json 的库。实际上,您得到的文本(可以保存到文件中)是 人类可读的 并且可以在文本编辑器中编辑。还有 JSON 个文件查看器和编辑器,它们使 JSON 个文件中的 viewing/editing 个更容易。