我看到如果我们更改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)
我认为os.path.expanduser(path)可能会有所帮助。
os.path.expanduser(path)
在Unix和Windows上,以该用户的主目录的初始组件~ 或~user由该用户的主目录替换的参数返回该参数。 在Unix上,~如果设置了初始,则将其替换为环境变量HOME;否则,将其替换为环境变量HOME。否则,通过内置模块在密码目录中查找当前用户的主目录pwd。 最初~user在口令目录直接抬起头来。 在Windows上,如果已设置,则将使用HOME和USERPROFILE,否则将使用 HOMEPATH和HOMEDRIVE 的 组合 。 通过从上面派生的创建的用户路径中删除最后一个目录组件来处理 首字母~user缩写。 如果扩展失败,或者路径不是以波浪号开头,则路径将保持不变。
在Unix和Windows上,以该用户的主目录的初始组件~ 或~user由该用户的主目录替换的参数返回该参数。
~
~user
在Unix上,~如果设置了初始,则将其替换为环境变量HOME;否则,将其替换为环境变量HOME。否则,通过内置模块在密码目录中查找当前用户的主目录pwd。 最初~user在口令目录直接抬起头来。
pwd
在Windows上,如果已设置,则将使用HOME和USERPROFILE,否则将使用 HOMEPATH和HOMEDRIVE 的 组合 。 通过从上面派生的创建的用户路径中删除最后一个目录组件来处理 首字母~user缩写。
如果扩展失败,或者路径不是以波浪号开头,则路径将保持不变。
因此,您可以这样做:
os.path.expanduser('~user')