Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中获取主目录?_Python_Cross Platform_Home Directory - Fatal编程技术网

如何在Python中获取主目录?

如何在Python中获取主目录?,python,cross-platform,home-directory,Python,Cross Platform,Home Directory,我需要获取当前登录用户的主目录的位置。目前,我在Linux上使用了以下功能: os.getenv("HOME") 但是,这在Windows上不起作用。正确的跨平台方法是什么?您想要使用。 这将确保它在所有平台上工作: from os.path import expanduser home = expanduser("~") 如果您使用的是Python 3.5+,则可以使用: 我知道这是一个旧线程,但我最近在一个大型项目(Python3.8)中需要它。它必须在任何主流操作系统上工作,因此我选择

我需要获取当前登录用户的主目录的位置。目前,我在Linux上使用了以下功能:

os.getenv("HOME")
但是,这在Windows上不起作用。正确的跨平台方法是什么?

您想要使用。
这将确保它在所有平台上工作:

from os.path import expanduser
home = expanduser("~")
如果您使用的是Python 3.5+,则可以使用:


我知道这是一个旧线程,但我最近在一个大型项目(Python3.8)中需要它。它必须在任何主流操作系统上工作,因此我选择了@Max在评论中写道的解决方案

代码:

输出窗口:

PS C:\Python> & C:/Python38/python.exe c:/Python/test.py
C:\Users\mXXXXX
输出Linux(Ubuntu):


我还在Python2.7.17上测试了它,这也很有效。

我发现pathlib模块也支持这一点

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

需要注意的是,如果用户登录到windows上的域,并在active directory中设置了其配置文件主文件夹,则这将报告映射的网络文件夹,而不是本地主目录从Python3.5开始提供
pathlib.Path.home(),但是如果您需要知道其他用户的主目录在哪里,您可以使用
os.path.expanduser(“~username”)
。但可能只适用于Linux。@Dipayan不,这是pathlib的Python 2后端口。对于Python3,pathlib是正确的。结果是相同的。如果您通常使用pathlib,您可能更喜欢pathlib解决方案(并且省略对
str
的调用)。如果您只想将路径设置为字符串,那么它们的作用都是相同的。这标记为的重复,但我投票决定重新打开,因为此答案适用于Python 3,而旧答案不适用。问题标题应该改进为询问“在Python中获取主目录的正确跨平台方法是什么?”你的答案和德克利斯的有什么不同?
PS C:\Python> & C:/Python38/python.exe c:/Python/test.py
C:\Users\mXXXXX
rxxx@xx:/mnt/c/Python$ python3 test.py
/home/rxxx
from pathlib import Path
>>> Path.home()
WindowsPath('C:/Users/XXX')