繁体   English   中英

python 打印从文件输入列表中列出的目录

[英]python print directories listing from input list of files

我想从给定的文件输入列表中打印高级目录结构(不重复)。

例如:输入文件列表是,

li=['a/b/c.txt','a/b/d/cc.txt','a/e/f.txt', 'g/h/i.txt','j/k.txt','l/m.txt']

和 output 一样

a
+----b
     +----d
+----e
g
+----h
j
l

我通过堆栈溢出的类似帖子(在发布此问题之前)做了 go ,但大多数帖子的输入都没有来自本地的重复或树状结构或目录列表(并且这些情况都与我正在查看的问题不匹配)

这是对我有用的解决方案。

def generate_nested_dirs(dir_list):
    nested_dirs={}
    for d in dir_list:
        temp=nested_dirs
        for sub_dir in d.split("/"):
            if temp.get(sub_dir) is None:
                temp[sub_dir]={}
            temp=temp[sub_dir]
    return nested_dirs


def print_dirs(input_dict,indent):
    for dir in list(input_dict):
        if indent == 0:
            print(dir)
        else:
            print('\t'*indent,'+--->',dir)
        if input_dict[d]:
            print(input_dict[dir], indent+1)

最后调用上述两个函数,

li=['a/b/c.txt','a/b/d/cc.txt','a/e/f.txt', 'g/h/i.txt','j/k.txt','l/m.txt']
all_dirs=[]
for f in li:
            all_dirs.append("/".join(f.split("/")[1:-1]))
all_dirs=sorted(set(all_dirs))
to_print=generate_nested_dirs(all_dirs)
print_dirs(to_print)

而 output 将是

a
    +----b
        +----d
    +----e
g
    +----h
j
l

注意:部分解决方案是通过“trie”方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM