简体   繁体   中英

How to get the filesystem's root directory in Python?

Situation: I need to find the top level [root] directory of any operating system using the most Pythonic way possible, without system calls.

Problem: While I can check for the operating system using things like if "Windows" in platform.system() , I cannot be too sure if the drive letter is always C:\ or / (the latter being unlikely). I also cannot possibly be sure that there are only Windows and *NIXes that needs to be catalog.

Question: Is there a way to get the top level directory of any operating system? Preferably using the os module since I am already using it.

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

Windows doesn't have a single filesystem root. The best you can do portably is to get the root of the filesystem's current directory (assuming the current directory is called '.' ).

The expression to get that value is:

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

On Windows, if the current directory is anywhere under C: , that line will return 'C:\\' , while unix-like systems will return '/' .

I have no idea what VMS would give you.

You can use the following to get to the root directory.

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")

First, BASE_DIR is obtained as the current working directory. Then, a while loop is used to go to the parent directory till it reaches the root directory. When BASE_DIR is the root directory, again using os.path.dirname on the root directory gives the root directory itself. So, using that as a check, we can get the root directory.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM