我正在开发适用于Windows和Mac的应用程序,我需要一些关于我应该如何组织输入数据的文件结构(例如配置文件)的帮助,以便我可以轻松实现用于Mac。
我有一个非常简单的程序,它从目录data
中读取一些数据。 在Windows中,我创建了example.exe
并且data
文件夹位于其旁边。如果用户需要处理更多数据(通过电子邮件接收),则只需将文件放在文件夹中,然后双击example.exe
。
我设法创建了DMG,但我不知道将数据文件夹放在哪里。硬编码另一个文件夹(例如HOME
或Desktop
)有效,但感觉不对。我想有一个Button打开一个Dialog来指定文件夹,但是我需要保存下次用户打开应用程序的路径。为了保存此路径,我需要一个配置文件或工作区。所以,我需要一个可以找到配置文件的路径。
Mac可用性视角中的预期行为,以及如何根据目录位置和配置文件进行操作?
答案 0 :(得分:1)
我想说将数据文件夹与macOS中的可执行python脚本并存是没有错的。
我假设这是一个只有没有GUI的脚本。如果有GUI,我说应该鼓励用户将应用程序复制到/ Applications(或〜/ Applications),然后为用户提供一种选择"数据的方法。使用对话框的文件夹。
我认为最适合Windows和macOS的解决方案是允许将数据目录的路径指定为命令行参数。如果未指定,则默认为./data
如果要保存用户指定的数据目录路径设置,那么使用defaults
系统就是一种类似mac的技巧。您可以使用defaults read
和defaults write
命令在脚本中轻松读取和写入默认值。默认值使用reverse domain name notation来帮助确保它们在所有应用程序中都是唯一的。
假设您的组织名为ttwidgets,如果您有一个名为ttwidgets.com的网站,并且此脚本名为pywidget,则您将使用域com.ttwidgets.pywidget
。
设置默认值的语法是:
% defaults write com.ttwidgets.pywidget datapath /user/specified/path
然后由macOS管理并持久存储。如果以后使用以下设置再次存在,您可以回读该设置:
% defaults read com.ttwidgets.pywidget datapath
/user/specified/path
如果没有设置(例如,第一次使用),您将收到错误(并且该命令返回非零返回码:
% defaults read com.ttwidgets.pywidget an_unset_variable
2018-04-21 12:08:40.179 defaults[12409:1472790]
The domain/default pair of (com.ttwidgets.pywidget, an_unset_variable) does not exist
% echo $?
1
这应该提供使用macOS的内置首选方法来持久存储应用程序的键/值设置所需的所有工具。