python中列表中的树文件结构?

时间:2013-06-13 11:18:53

标签: python

我有一个动态列表,可能如下所示:

['test_data/reads1.fq', 'test_data/reads_2.fq', 'test_data/new_directory/ok.txt', 
 'test_data/new_directory/new_new_dir/test.txt', 'hello/hello1.txt'] and so on

我想从这个文件构建层次结构树结构:

test_data
   files
    new_directory
    file
    new_new_dir
       file

hello

我怎样才能在Python中执行此操作?

以下代码将构建列表到文件的根目录。我怎么能在那之后继续?

 [i.split('/') for i in a]

2 个答案:

答案 0 :(得分:4)

这是一个非常粗略的算法:

  • 对于列表中的每个字符串:
    • 将其拆分为路径组件
    • 对于每个组件:
      • 检查当前级别是否存在该名称的树节点,否则创建
      • 如果是非叶子,则使节点刚访问(或创建)当前节点

答案 1 :(得分:4)

您可以非常简单地构建层次结构,如下所示:

t = {}
for p in pp:
    tt = t
    for c in p.split('/'):
        tt = tt.setdefault(c, {})

唯一的问题是,树叶被表示为带有空字典的键:

{'test_data': {'reads1.fq'    : {},
               'reads_2.fq'   : {},
               'new_directory': {'ok.txt'     : {},
                                 'new_new_dir': {'test.txt': {}}}},
 'hello'    : {'hello1.txt': {}}}