如何在Python中获取主目录?


934

我需要获取当前登录用户的主目录的位置。当前,我在Linux上一直使用以下命令:

os.getenv("HOME")

但是,这在Windows上不起作用。正确的跨平台方法是什么?


2
这被标记为“如何使用python查找真实用户主目录”的副本,但我投票决定重新打开,因为此答案适用于Python 3,而较早的答案则无效。
Dour High Arch

Answers:


1677

您要使用os.path.expanduser
这将确保它可在所有平台上运行:

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

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

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

48
应当注意,如果用户登录到Windows上的域,并在活动目录中设置了其个人资料主文件夹,则它将报告该映射的网络文件夹,而不是本地主目录
scape


9
我想知道为什么在这个问题中没有人提到它,但是如果您需要知道其他用户的主目录在哪里,则可以使用os.path.expanduser('~username')。虽然可能仅适用于Linux。
最大

2
@Dipayan不,那是pathlib的Python 2反向端口。对于Python 3,pathlib是正确的。
干草堆

2
结果是一样的。如果您通常使用pathlib,则可能更喜欢pathlib解决方案(并省略的调用str)。如果您只希望路径为字符串,则它们都将执行相同操作。
Niklas Mertsch '19

-19

这是一种Linux方式cd ..如果您需要使用它,请注意:(如果位于子目录中,它将进入该目录)


4
这将更改为上一个目录。也许您在看错问题?
TheTechRobo36414519's

1
我认为OP正在寻找可以在python脚本中工作的东西,该命令将转到cwd的父目录,而该目录可能不是用户的主目录。
本杰明·古德克里

我知道这回答了一个错误的问题,但这是大量的否决票-一张新海报,不少于此...
rodrigo-silveira
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.