我想制作一个python程序(使用PyQt GUI,但我不知道这是否相关),即使程序关闭,也必须保存一些我想存储的信息。我想存储的信息示例:
-
用户可以在文件对话框窗口中搜索文件。我想在以前使用的目录中启动文件对话框窗口,即使程序在文件搜索之间关闭。
-
用户可以输入自己的类别来对项目进行排序,这是基于我的一些预定义类别。这些新类别应在下次程序启动时可用。
现在我想知道存储此类信息的正确方式是什么。我应该使用pickle吗?一个合适的数据库(我知道一点点sqlite3,但必须读一下)?一个我自己解析的简单文本文件?一件事适用于示例1.中的数据,另一件事则适用于示例2.中的数据。?
此外,无论我用什么方式存储它,我会把文件放在哪里?
在这种情况下,我想问的是,我以后可能想让我的程序作为一个独立的应用程序(使用py2app、py2exe或PyInstaller)提供给其他人。
现在我只是在我的.py文件所在的目录中保存一个pickle文件,就像这个答案一样,但答案也特别提到:
对于个人项目来说,这可能就足够了。
(强调矿)
如果我想将程序作为一个独立的应用程序提供给其他人,那么使用pickle也是"正确、专业"的方式吗?
选择取决于您存储数据的方法,哪种是您的?:
- 用户应该能够在不使用我的程序的情况下更改它
- 应该防止用户使用我的程序以外的程序更改它
如果首先考虑部署JSON开放标准文件格式,Python已经为其准备了一个名为JSON的库。实际上,您得到的文本(可以保存到文件中)是人类可读的,并且可以在文本编辑器中编辑。此外,还有JSON文件查看器和编辑器,使JSON文件的查看/编辑变得更容易。
正如摩尔多瓦评论的那样,我认为SQLite3是这种情况下更好的解决方案。
pickle中有一个问题,有时pickle格式可以在python版本之间更改,使用sqlite3有更大的优势。