返回所有祖先/父路径的列表

时间:2016-01-20 03:34:48

标签: python-2.7 filepath

我正在寻找一种更加Pythonic的方式来返回所有父路径的列表,包括自包含的路径。

例如,给定:

"/dir1/dir2/dir3"

返回:

["/dir1", "/dir1/dir2", "/dir1/dir2/dir3"]

到目前为止,我基本上都在做:

import os
path = os.path.normpath(path)
path_parts = path.split(os.sep)

然后迭代部件以重建列表。我不能帮助,但感觉它是一个丑陋的kludge虽然......

1 个答案:

答案 0 :(得分:1)

我不知道您是否已经使用列表理解来执行此操作,因此,如果没有,您可以尝试以下内容:

import os

def get_branch_dirs(dir):
    levels = dir.split(os.path.sep)
    return [os.path.sep.join(levels[:i+1]+[""]) for i in range(len(levels))]

get_branch_dirs(dir="/dir1/dir2/dir3")

输出:

['/', '/dir1/', '/dir1/dir2/', '/dir1/dir2/dir3/']

如果您希望dir字符串以“/”

结尾,则可能需要调整它

编辑:实际上,我刚刚意识到你不想列出根目录,所以请尝试这样做:

def get_branch_dirs(dir):
    levels = dir.split(os.path.sep)
    return [os.path.sep.join(levels[:i + 1]) for i in range(len(levels))][1:]


get_branch_dirs(dir="/dir1/dir2/dir3")

输出

['/dir1', '/dir1/dir2', '/dir1/dir2/dir3']