How do I get a file's parent directory?

前端 未结 4 1108
时光取名叫无心
时光取名叫无心 2021-01-11 17:40

Given a path to a file, c:\\xxx\\abc\\xyz\\fileName.jpg, how can I get the file\'s parent folder? In this example, I\'m looking for xyz. The number

相关标签:
4条回答
  • 2021-01-11 17:47

    I use the following apprach.

    (a) Split the full path to the file by the os spearator.

    (b) Take the resulting array and return the elments with indexes ranging from [0: lastIndex-1] - In short, remove the last element from the array that results from the split

    (c) SImply join together the array that is one elment short using the os separator once again. Should work for windows and linux.

    Here is a class function exemplifying.

    # @param
    #   absolutePathToFile an absolute path pointing to a file or directory
    # @return
    #       The path to the parent element of the path (e.g. if the absolutePathToFile represents a file, the result is its parent directory)
    # if the path represent a directory, the result is its parent directory
    def getParentDirectoryFromFile(self, absolutePathToFile):
        splitResutsFromZeroToNMinus1 = absolutePathToFile.split(os.sep)[:-1]
        return  os.sep.join(splitResutsFromZeroToNMinus1) 
    pass
    
    0 讨论(0)
  • 2021-01-11 17:49

    Use os.path.dirname to get the directory path. If you only want the name of the directory, you can use os.path.basename to extract the base name from it:

    >>> path = r'c:\xxx\abc\xyz\fileName.jpg'
    >>> import os
    >>> os.path.dirname(path)
    'c:\\xxx\\abc\\xyz'
    >>> os.path.basename(os.path.dirname(path))
    'xyz'
    
    0 讨论(0)
  • 2021-01-11 17:49

    Using python >= 3.4 pathlib is part of the standard library, you can get the parent name with .parent.name:

    from pathlib import Path
    print(Path(path).parent.name)
    

    To get all the names use .parents:

    print([p.name for p in Path(path).parents])
    

    It can be installed for python2 with pip install pathlib

    0 讨论(0)
  • 2021-01-11 18:07

    If all your paths look the same like the one you provided:

    print path.split('\\')[-2]
    
    0 讨论(0)
提交回复
热议问题