一种独立于系统的方法,使用python来获取安装了python的根目录/驱动器

Ben*_*ey4 40 python operating-system cross-platform path

对于Linux,这将给我/,因为C盘上的Windows会给我C:\\.请注意,python不一定安装在Windows上的C驱动器上.

小智 92

试试这个:

import os

def root_path():
    return os.path.abspath(os.sep)
Run Code Online (Sandbox Code Playgroud)

在Linux上,这将返回 /

在Windows上,它返回C:\\当前驱动器或任何当前驱动器

  • 这将为您提供在Windows上运行脚本的驱动器号; 不是python可执行文件正在运行的驱动器号,因为接受的答案提供.可能是找到此页面的各种用户想要的,接受的答案提供了原始问题所要求的内容. (3认同)

jte*_*ace 26

您可以使用以下命令获取Python可执行文件的路径sys.executable:

>>> import sys
>>> import os
>>> sys.executable
'/usr/bin/python'
Run Code Online (Sandbox Code Playgroud)

然后,对于Windows,驱动器号将是splitdrive的第一部分:

>>> os.path.splitdrive(sys.executable)
('', '/usr/bin/python')
Run Code Online (Sandbox Code Playgroud)

  • @ Bentley4我认为他们这样做是为了正确.``/``真的**不是**驱动器号 (6认同)
  • 如果`os.path.splitdrive(sys.executable)[0]`也会在linux中以root身份返回`/`,那将是很好的.但这很好,谢谢! (4认同)

beh*_*nam 7

这就是你需要的:

import sys, os

def get_sys_exec_root_or_drive():
    path = sys.executable
    while os.path.split(path)[1]:
        path = os.path.split(path)[0]
    return path
Run Code Online (Sandbox Code Playgroud)


Eug*_*ash 5

使用pathlib(Python 3.4+):

import sys
from pathlib import Path

path = Path(sys.executable)
root_or_drive = path.root or path.drive
Run Code Online (Sandbox Code Playgroud)


小智 5

根据 Eugene Yamash 的回答,您可以早PurePath.anchor在 Python >= 3.4 中使用该属性,即:pathlib

驱动器和根的串联

使用sys.executable来获取 python 安装的位置,完整的解决方案是:

import sys
from pathlib import Path

root = Path(sys.executable).anchor
Run Code Online (Sandbox Code Playgroud)

这会在'/'POSIX(Linux、Mac OS)上产生结果,并且'c:\\'在 Windows 上应该会产生结果(假设您的安装是在c:)。您可以使用任何其他路径,而不是sys.executable获取该其他路径所在的驱动器和根目录。