获取主目录的跨平台方法是什么?

1207 投票
5 回答
665439 浏览
提问于 2025-04-16 06:08

我需要找到当前登录用户的主目录位置。在Linux系统上,我一直在使用以下方法:

os.getenv("HOME")

不过,这在Windows上不管用。请问有什么正确的跨平台方法可以做到这一点呢?

5 个回答

21

我知道这是个老帖子,但我最近在做一个大项目时需要这个(使用Python 3.8)。这个项目必须能在任何主流操作系统上运行,所以我选择了@Max在评论中提到的解决方案。

代码:

import os
print(os.path.expanduser("~"))

在Windows上的输出:

PS C:\Python> & C:/Python38/python.exe c:/Python/test.py
C:\Users\mXXXXX

在Linux(Ubuntu)上的输出:

rxxx@xx:/mnt/c/Python$ python3 test.py
/home/rxxx

我还在Python 2.7.17上测试过,这个也能正常工作。

36

我发现 pathlib 模块也支持这个功能。

from pathlib import Path
>>> Path.home()
WindowsPath('C:/Users/XXX')
2090

你想要使用 os.path.expanduser
这样做可以确保它在所有平台上都能正常工作:

from os.path import expanduser
home = expanduser("~")

如果你使用的是 Python 3.5+,你可以用 pathlib.Path.home()

from pathlib import Path
home = str(Path.home())

不过,通常最好不要把 Path.home() 转换成字符串。这样用起来更自然:

with open(Path.home() / ".ssh" / "known_hosts") as f:
    lines = f.readlines()

撰写回答