我正在寻找一种更加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 :(得分: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']