2

我有一个 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...

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

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

4

1 回答 1

3

dict-of-dicts 怎么样?就像是:

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

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

def tree(): return defaultdict(tree)

这种结构的一个很好的特性是,如果您尝试创建路径,则不需要存在中间键:

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

这将自动为您创建中间键

页面更详细。

于 2012-05-10T05:37:16.500 回答