Python 2.7 返回所有祖先/父路径的列表
我正在寻找一种更具python风格的方法来返回给定路径中的所有父路径的列表(自包含) 例如,假设:Python 2.7 返回所有祖先/父路径的列表,python-2.7,filepath,Python 2.7,Filepath,我正在寻找一种更具python风格的方法来返回给定路径中的所有父路径的列表(自包含) 例如,假设: "/dir1/dir2/dir3" 返回: ["/dir1", "/dir1/dir2", "/dir1/dir2/dir3"] 到目前为止,我基本上在做: import os path = os.path.normpath(path) path_parts = path.split(os.sep) 然后在零件上迭代以重建列表。我忍不住觉得这是一个难看的难题…我不知道您是否已经在使用列表理解
"/dir1/dir2/dir3"
返回:
["/dir1", "/dir1/dir2", "/dir1/dir2/dir3"]
到目前为止,我基本上在做:
import os
path = os.path.normpath(path)
path_parts = path.split(os.sep)
然后在零件上迭代以重建列表。我忍不住觉得这是一个难看的难题…我不知道您是否已经在使用列表理解来完成它,因此,如果没有,您可以尝试以下方法:
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']
我不知道您是否已经在使用列表理解来执行此操作,因此,如果没有,您可以尝试以下操作:
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']
没有内置的函数可以做到这一点。所以,我想说,你所做的很好,没有内置的函数。所以,我想说,你现在做的很好。