5

情况:我需要使用最 Pythonic 的方式找到任何操作系统的顶级 [root] 目录,而无需系统调用。

问题:虽然我可以使用类似的东西检查操作系统if "Windows" in platform.system(),但我不能确定驱动器号是否总是C:\/(后者不太可能)。我也无法确定只有 Windows 和 *NIX 需要编目。

问题:有没有办法获取任何操作系统的顶级目录?最好使用该os模块,因为我已经在使用它。

4

3 回答 3

6

我相信os.path.abspath(os.sep)接近你所要求的。

于 2018-01-19T04:21:22.623 回答
4

Windows 没有单个文件系统根。可移植的最好方法是获取文件系统当前目录的根目录(假设当前目录名为'.')。

获取该值的表达式是:

os.path.abspath('.').split(os.path.sep)[0]+os.path.sep

在 Windows 上,如果当前目录位于 下的任何位置C:,则该行将返回'C:\',而类 unix 系统将返回'/'

我不知道 VMS 会给你什么。

于 2018-01-19T06:38:29.167 回答
0

您可以使用以下命令进入根目录。

file_path = os.path.abspath(__file__)
BASE_DIR = os.path.dirname(file_path)
while (os.path.isdir(BASE_DIR)):
    if (BASE_DIR==os.path.dirname(BASE_DIR)):
        break
    else:
        BASE_DIR=os.path.dirname(BASE_DIR)
        
print(f"{BASE_DIR} is the root directory")

首先,获取 BASE_DIR 作为当前工作目录。然后,使用 while 循环转到父目录,直到到达根目录。当 BASE_DIR 是根目录时,再次在根目录上使用 os.path.dirname 会给出根目录本身。因此,使用它作为检查,我们可以获得根目录。

于 2021-10-11T09:58:46.243 回答