一尘不染

如何使用python查找真实的用户主目录?

linux

我看到如果我们更改HOME(linux)或USERPROFILE(windows)环境变量并运行python脚本,当我尝试时,它将返回新值作为用户主目录os.environ
[‘HOME’] os.exp

有什么方法可以在不依赖环境变量的情况下找到真实的用户主目录?

编辑:
这是一种通过阅读注册表http://mail.python.org/pipermail/python-
win32/2008-January/006677.html在Windows中查找userhome的方法。

编辑:
一种使用pywin32查找Windows Home的方法,

from win32com.shell import shell,shellcon
home = shell.SHGetFolderPath(0, shellcon.CSIDL_PROFILE, None, 0)

阅读 389

收藏
2020-06-02

共1个答案

一尘不染

我认为os.path.expanduser(path)可能会有所帮助。

在Unix和Windows上,以该用户的主目录的初始组件~~user由该用户的主目录替换的参数返回该参数。

在Unix上,~如果设置了初始,则将其替换为环境变量HOME;否则,将其替换为环境变量HOME。否则,通过内置模块在密码目录中查找当前用户的主目录pwd
最初~user在口令目录直接抬起头来

在Windows上,如果已设置,则将使用HOME和USERPROFILE,否则将使用 HOMEPATH和HOMEDRIVE组合
通过从上面派生的创建的用户路径中删除最后一个目录组件来处理 首字母~user缩写

如果扩展失败,或者路径不是以波浪号开头,则路径将保持不变。

因此,您可以这样做:

os.path.expanduser('~user')
2020-06-02