在python中管理目录树的路径

时间:2012-05-10 05:00:56

标签: python path tree directory-structure

我有一个python脚本,可以跟踪多个目录名称作为单个变量。其中一些目录可能存在,而其他目录可能需要在执行时创建。

例如,如果我有这个目录树:

./top
     /a
       /a1
       /a2
     /b
       /b1
     /c

然后我当前跟踪具有单个变量的所有目录路径名称:

top_path = os.path.join(os.curdir, 'top')
a_path = os.path.join(top_path, 'a')
# etc...

但如果不是实际的操作系统目录支持,以某种方式组织它们会很好,如果不是实际的OS目录支持。

在python中是否有一些管理目录树(或任何变量树)的标准方法?或者我应该将所有内容存储在嵌套列表或元组中,还是创建自己的类?像top.a.a1返回'./top/a/a1'这样的API很棒。

1 个答案:

答案 0 :(得分:3)

一个词典怎么样?类似的东西:

tree = {
       'top': {
              'a': {
                   'path': a_pathvar,
                   'a1':
                   'a2':
               }
               'b': {
                    'path':  b_pathvar,
                }
         }
       }

然后,您可以使用a1轻松访问tree['top']['a']['a1']['path']的路径变量。您可以使用一行代码轻松创建此树结构:

def tree(): return defaultdict(tree)

此结构的一个不错的属性是,如果您尝试创建路径,则不需要存在中间键:

tree['top']['a']['long']['tree']['path'] = path_var

这将自动为您创建中间密钥

This页面详细介绍。