Extract a part of the filepath (a directory) in Python

后端 未结 7 1951
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-07 17:10

I need to extract the name of the parent directory of a certain path. This is what it looks like:

c:\\stuff\\directory_i_need\\subdir\\file
<
相关标签:
7条回答
  • 2020-12-07 17:39

    You have to put the entire path as a parameter to os.path.split. See The docs. It doesn't work like string split.

    0 讨论(0)
  • 2020-12-07 17:40

    This is what I did to extract the piece of the directory:

    for path in file_list:
      directories = path.rsplit('\\')
      directories.reverse()
      line_replace_add_directory = line_replace+directories[2]
    

    Thank you for your help.

    0 讨论(0)
  • 2020-12-07 17:47

    All you need is parent part if you use pathlib.

    from pathlib import Path
    p = Path(r'C:\Program Files\Internet Explorer\iexplore.exe')
    print(p.parent) 
    

    Will output:

    C:\Program Files\Internet Explorer    
    

    Case you need all parts (already covered in other answers) use parts:

    p = Path(r'C:\Program Files\Internet Explorer\iexplore.exe')
    print(p.parts) 
    

    Then you will get a list:

    ('C:\\', 'Program Files', 'Internet Explorer', 'iexplore.exe')
    

    Saves tone of time.

    0 讨论(0)
  • 2020-12-07 17:53
    import os
    ## first file in current dir (with full path)
    file = os.path.join(os.getcwd(), os.listdir(os.getcwd())[0])
    file
    os.path.dirname(file) ## directory of file
    os.path.dirname(os.path.dirname(file)) ## directory of directory of file
    ...
    

    And you can continue doing this as many times as necessary...

    Edit: from os.path, you can use either os.path.split or os.path.basename:

    dir = os.path.dirname(os.path.dirname(file)) ## dir of dir of file
    ## once you're at the directory level you want, with the desired directory as the final path node:
    dirname1 = os.path.basename(dir) 
    dirname2 = os.path.split(dir)[1] ## if you look at the documentation, this is exactly what os.path.basename does.
    
    0 讨论(0)
  • 2020-12-07 17:54

    In Python 3.4 you can use the pathlib module:

    >>> from pathlib import Path
    >>> p = Path('C:\Program Files\Internet Explorer\iexplore.exe')
    >>> p.name
    'iexplore.exe'
    >>> p.suffix
    '.exe'
    >>> p.root
    '\\'
    >>> p.parts
    ('C:\\', 'Program Files', 'Internet Explorer', 'iexplore.exe')
    >>> p.relative_to('C:\Program Files')
    WindowsPath('Internet Explorer/iexplore.exe')
    >>> p.exists()
    True
    
    0 讨论(0)
  • 2020-12-07 17:56
    import os
    
    directory = os.path.abspath('\\') # root directory
    print(directory) # e.g. 'C:\'
    
    directory = os.path.abspath('.') # current directory
    print(directory) # e.g. 'C:\Users\User\Desktop'
    
    parent_directory, directory_name = os.path.split(directory)
    print(directory_name) # e.g. 'Desktop'
    parent_parent_directory, parent_directory_name = os.path.split(parent_directory)
    print(parent_directory_name) # e.g. 'User'
    

    This should also do the trick.

    0 讨论(0)
提交回复
热议问题