在哪里读取.DMG Mac OS 文件中的数据文件夹和配置文件?
Where to read a data folder and configuration file in .DMG Mac OS file?
我正在为 Windows 和 Mac 开发一个应用程序,我需要一些关于 我应该如何组织输入数据的文件结构(例如配置文件)的帮助,这样我就可以让它更容易用于 Mac。
以下是我为 Windows 设置的方式:
我有一个非常简单的程序,可以从目录 data
中读取一些数据。 在 Windows 中,我创建了一个 example.exe
,data
文件夹位于它旁边 。如果用户需要处理更多数据(通过电子邮件接收),她只需将文件放入文件夹并双击 example.exe
。
这是我为 Mac Os:
所做的
我设法创建了 DMG,但我不知道将数据文件夹放在哪里。硬编码另一个文件夹(例如 HOME
或 Desktop
)可行,但感觉不对。我想有一个 Button 打开一个 Dialog 来指定文件夹,但是我需要 保存路径以供用户下次打开应用程序 。为了保存这个路径,我需要一个配置文件或工作空间。所以,我再次需要一个可以找到配置文件的路径。
从Mac可用性角度,预期行为是什么,以及我将如何处理它目录位置和配置文件?
我会说让数据文件夹与 macOS.
中的可执行 python 脚本并存并没有错
我假设这是一个没有 GUI 的脚本。如果有 GUI,我说应该鼓励用户将应用程序复制到 /Applications(或 ~/Applications),然后为用户提供一种使用对话框 select 到 "data" 文件夹的方法盒子。
不过,我认为对 Windows 和 macOS 都适用的最佳解决方案是允许将数据目录的路径指定为命令行参数.如果指定了none,可以默认为./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
如果未设置任何内容(例如,首次使用),您将收到错误消息(并且命令 return 是一个非零 return 代码:
% 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 的内置首选方法永久存储应用程序 key/value 设置所需的所有工具。
我正在为 Windows 和 Mac 开发一个应用程序,我需要一些关于 我应该如何组织输入数据的文件结构(例如配置文件)的帮助,这样我就可以让它更容易用于 Mac。
以下是我为 Windows 设置的方式:
我有一个非常简单的程序,可以从目录 data
中读取一些数据。 在 Windows 中,我创建了一个 example.exe
,data
文件夹位于它旁边 。如果用户需要处理更多数据(通过电子邮件接收),她只需将文件放入文件夹并双击 example.exe
。
这是我为 Mac Os:
所做的我设法创建了 DMG,但我不知道将数据文件夹放在哪里。硬编码另一个文件夹(例如 HOME
或 Desktop
)可行,但感觉不对。我想有一个 Button 打开一个 Dialog 来指定文件夹,但是我需要 保存路径以供用户下次打开应用程序 。为了保存这个路径,我需要一个配置文件或工作空间。所以,我再次需要一个可以找到配置文件的路径。
从Mac可用性角度,预期行为是什么,以及我将如何处理它目录位置和配置文件?
我会说让数据文件夹与 macOS.
中的可执行 python 脚本并存并没有错我假设这是一个没有 GUI 的脚本。如果有 GUI,我说应该鼓励用户将应用程序复制到 /Applications(或 ~/Applications),然后为用户提供一种使用对话框 select 到 "data" 文件夹的方法盒子。
不过,我认为对 Windows 和 macOS 都适用的最佳解决方案是允许将数据目录的路径指定为命令行参数.如果指定了none,可以默认为./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
如果未设置任何内容(例如,首次使用),您将收到错误消息(并且命令 return 是一个非零 return 代码:
% 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 的内置首选方法永久存储应用程序 key/value 设置所需的所有工具。