情况:我需要使用最 Pythonic 的方式找到任何操作系统的顶级 [root] 目录,而无需系统调用。
问题:虽然我可以使用类似的东西检查操作系统if "Windows" in platform.system()
,但我不能确定驱动器号是否总是C:\
或/
(后者不太可能)。我也无法确定只有 Windows 和 *NIX 需要编目。
问题:有没有办法获取任何操作系统的顶级目录?最好使用该os
模块,因为我已经在使用它。
情况:我需要使用最 Pythonic 的方式找到任何操作系统的顶级 [root] 目录,而无需系统调用。
问题:虽然我可以使用类似的东西检查操作系统if "Windows" in platform.system()
,但我不能确定驱动器号是否总是C:\
或/
(后者不太可能)。我也无法确定只有 Windows 和 *NIX 需要编目。
问题:有没有办法获取任何操作系统的顶级目录?最好使用该os
模块,因为我已经在使用它。
我相信os.path.abspath(os.sep)
接近你所要求的。
Windows 没有单个文件系统根。可移植的最好方法是获取文件系统当前目录的根目录(假设当前目录名为'.'
)。
获取该值的表达式是:
os.path.abspath('.').split(os.path.sep)[0]+os.path.sep
在 Windows 上,如果当前目录位于 下的任何位置C:
,则该行将返回'C:\'
,而类 unix 系统将返回'/'
。
我不知道 VMS 会给你什么。
您可以使用以下命令进入根目录。
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 会给出根目录本身。因此,使用它作为检查,我们可以获得根目录。