我正在开发适用于 Windows 和 Mac 的应用程序,我需要一些关于如何组织输入数据的文件结构(例如配置文件)的帮助,以便我可以轻松完成用于Mac。
以下是我在 Windows 上的设置方法:
我有一个非常简单的程序,它从目录data
读取一些数据。 在 Windows 中,我创建了一个 example.exe
,data
文件夹位于它旁边。如果用户需要处理更多数据(通过电子邮件接收),她只需将文件放入文件夹中,然后双击 example.exe
。
这是我为 Mac OS 所做的事情:
我成功创建了 DMG,但我不知道将数据文件夹放在哪里。对另一个文件夹(例如 HOME
或 Desktop
)进行硬编码是可行的,但感觉不太对劲。我想过有一个按钮可以打开一个对话框来指定文件夹,但随后我需要保存路径以供用户下次打开应用程序。为了保存此路径,我需要一个配置文件或工作区。因此,我再次需要一个可以找到配置文件的路径。
从Mac可用性角度来看,预期行为是什么,以及我将如何在目录位置和配置文件方面进行处理?
最佳答案
我想说,在 macOS 中将数据文件夹与可执行 python 脚本并排放置并没有什么问题。
我假设这是一个没有 GUI 的脚本。如果有 GUI,我认为应该鼓励用户将应用程序复制到/Applications(或 ~/Applications),然后为用户提供一种使用对话框选择“数据”文件夹的方法。
不过,我认为适用于 Windows 和 macOS 的最佳解决方案是允许将数据目录的路径指定为命令行参数。如果没有指定,可以默认为./data
如果您想将用户指定的路径设置保存到数据目录,一个类似于 mac 的好方法是使用 defaults
系统。您可以使用 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 内置首选方法来持久存储应用程序的键/值设置所需的所有工具。
关于macos - 在哪里读取 .DMG Mac OS 文件中的数据文件夹和配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49919999/