获取主目录的跨平台方法是什么?
我需要找到当前登录用户的主目录位置。在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()