![](/img/trans.png)
[英]python multiprocessing while listing the files and extract data from list?
[英]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.