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