Nat*_*man 761 python cross-platform home-directory
我需要获取当前登录用户的主目录的位置.目前,我一直在Linux上使用以下内容:
os.getenv("HOME")
Run Code Online (Sandbox Code Playgroud)
但是,这在Windows上不起作用.什么是正确的跨平台方式?
dco*_*ish 1359
您想使用os.path.expanduser.这将确保它适用于所有平台
from os.path import expanduser
home = expanduser("~")
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Python 3.5+,则可以使用pathlib.Path.home():
from pathlib import Path
home = str(Path.home())
Run Code Online (Sandbox Code Playgroud)
我知道这是一个旧线程,但我最近在一个大型项目(Python 3.8)中需要它。它必须适用于任何主流操作系统,因此我采用了@Max 在评论中写的解决方案。
代码:
import os
print(os.path.expanduser("~"))
Run Code Online (Sandbox Code Playgroud)
输出窗口:
PS C:\Python> & C:/Python38/python.exe c:/Python/test.py
C:\Users\mXXXXX
Run Code Online (Sandbox Code Playgroud)
输出 Linux (Ubuntu):
rxxx@xx:/mnt/c/Python$ python3 test.py
/home/rxxx
Run Code Online (Sandbox Code Playgroud)
我还在 Python 2.7.17 上测试了它,它也有效。
小智 6
我发现 pathlib 模块也支持这一点。
from pathlib import Path
>>> Path.home()
WindowsPath('C:/Users/XXX')
Run Code Online (Sandbox Code Playgroud)
这可以使用 来完成pathlib,它是标准库的一部分,并将路径视为具有方法的对象,而不是字符串。
from pathlib import Path
home: str = str(Path('~').expanduser())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
349789 次 |
| 最近记录: |