2016-01-20 60 views
0

我正在寻找更多的Pythonic方法来从给定路径返回所有父路径,自包含路径的列表。返回所有祖先/父路径的列表

例如,给定:

"/dir1/dir2/dir3" 

返回:

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

到目前为止,我基本上是这样做的:

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

然后遍历部分重建列表。我不禁想起这是一个丑陋的kludge,虽然...

+0

没有内置函数做那。所以,我会说,你在做什么是好的。 – thefourtheye

回答

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

OUTPUT:

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

你可能想,如果你希望的目录字符串为以 “/”


结束调整它0

编辑:其实,我只是意识到你不想根目录中列出,那么试试这个来代替:

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'] 
相关问题