python os.path.expanduser() 这是始终如此吗

2024-06-08 16:23:15 发布

您现在位置:Python中文网/ 问答频道 /正文

解决方案:正如Thomas在下面指出的,我得到的任务几乎是不可能实现的,而且数据必须是动态确定的,因为任何操作系统使用的模板结构都可以相当容易地被重写,而且永远无法保证预构建的模板能够正确应用。感谢所有回复我的人(即使我一开始就想得到它…):-P

我目前无法访问基于mac或windows的计算机,我正在进行一个跨平台项目(Win/Lin/mac)。

在linux上,从调用返回到

os.path.expanduser('~')

返回/home/<user>

现在在任何操作系统中,$home directory结构都包含一个对所有路径都是公共的最后一点(在我的linux安装中,默认情况下主路径是/home/<user>,使/home成为最后一个公共点)。

所以我的问题(目前我不能简单地测试)是: 在windows和mac上,除了一些不寻常的重新配置(软件产品是针对普通家庭用户和青少年的)之外,返回路径的最后部分总是第一个非公共路径部分?

(这个问题可以说得更清楚些,但我正在为如何解释这个问题而蹒跚。这是重写3。)

编辑:在阅读了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)交换信息后(见下图): 在软件执行的这个阶段,它不知道在哪里查找自定义用户配置。从配置文件中读取的不是绝对地址,而是如何为配置文件构建绝对地址的模板。

该软件与视频游戏有关,并有一个青少年或成年人在标准家用电脑上工作的预期用户群。大多数用户不使用特殊的配置选项,如自定义的主用户目录位置。这部分代码与任何操作系统的所谓规范一起工作,并且忽略了对所讨论的操作系统进行自定义的可能性。虽然在程序上是不好的做法,但这是我目前所坚持的。


Tags: topath用户路径模板confighomeos