解决方案:正如 Thomas 在下面指出的那样,我被赋予的任务几乎不可能实现,并且必须动态确定数据,因为任何操作系统使用的模板结构都可以很容易地被覆盖,而且永远没有办法以保证可以正确应用预先构建的模板。我感谢所有回复的人(即使我一开始就很密集......):-P
我目前无法访问基于 Mac 或 Windows 的机器,我正在开发一个跨平台项目(Win/Lin/Mac)。
在 linux 上,调用返回
os.path.expanduser('~')
返回/home/<user>
现在在任何操作系统中,$home 目录结构都包含一个所有路径共有的最后一个点(在我的 linux 安装上/home/<user>
,默认情况下主路径是/home
最后一个公共点)。
所以我的问题(我现在不能简单地测试)是这样的:在 windows 和 mac 上,除非进行一些不寻常的重新配置(软件产品适用于普通家庭用户和青少年),否则返回路径的最后部分始终是第一个非-公共路径部分?
(这个问题可以说得更清楚,但我对如何解释这个问题感到困惑。这是重写三。)
编辑:在阅读下面评论中由 phihag 链接的文章后,我认为他要求更好地澄清我的预期用途(不可能的规范事情)。我要做的是确定返回的部分os.path.expanduser('~')
,我可以从中转换为新的相对路径定义的第一部分,然后我可以从中创建更多的目录结构,这些目录结构是每个用户特定的应用程序。相当于/home/<user>/.config/<MyAppHere>
或\Documents and Settings\<user>\Application Data\Roaming\<MyAppHere>
。我的最终结果将使用(如果可以根据我的意图确定此问题为真)以下内容:
# Assumes linux system and home path of /home/<user
head, tail = os.path.split(os.path.expanduser('~'))
userConfigPath = os.path.join(tail,'.config',MYAPPNAME)
# userConfigPath then gets written to a config file which is used by the program
# to determine where (within a greater structure) to look for a user based
# configuration which expands or overrides system configuration options.
编辑:与 Thomas Orozco(下)交换信息后:在软件执行的这个阶段,它不知道在哪里寻找自定义用户配置。从配置文件中读取的不是绝对地址,而是如何为配置文件构建绝对地址的模板。
有问题的软件与视频游戏有关,目标用户群是使用标准家用计算机的青少年或成年人。这些用户中的大多数不使用特殊的配置选项,例如自定义的主用户目录位置。这部分代码适用于任何操作系统的所谓规范,并且忽略了对相关操作系统进行定制的可能性。虽然以编程方式是不好的做法,但这是我目前所坚持的。