如何基于列表使用braceexpand结合os.makedirs创建目录结构?
使用
braceexpand结合动态列表生成目录结构 当然可以用braceexpand实现你想要的动态目录生成需求!关键是把你的动物列表转换成符合brace语法的字符串,再传给braceexpand处理,这样既能保留它的可读性,又能实现动态化。
具体实现步骤
- 先定义你的动态动物列表(可随时调整子集):
animals = ['cat', 'dog', 'bird'] # 比如可以改成只留['dog']或['cat', 'dog'] things = ['thing1', 'thing2', 'thing3', 'thing4'] - 把列表转换成brace格式的字符串:用
','.join()把列表元素拼接成cat,dog,bird,再套上大括号,嵌入到路径模板中。 - 用
braceexpand展开路径,循环创建目录即可。
完整代码示例:
from braceexpand import braceexpand import os animals = ['cat', 'dog', 'bird'] things = ['thing1', 'thing2', 'thing3', 'thing4'] # 构造符合brace语法的路径模板 path_template = f'/Users/admin/Desktop/{{{",".join(animals)}}}/{{{",".join(things)}}}' # 展开路径并创建目录 for path in braceexpand(path_template): os.makedirs(path, exist_ok=True)
为什么这样可行?
','.join(animals)会把列表转换成cat,dog,bird,加上外层大括号后就变成了{cat,dog,bird},完全匹配braceexpand的语法要求。- 这种写法和你最初手动写brace语法的逻辑一致,但可以通过修改
animals列表灵活控制要生成的动物目录子集,完美适配你“有时仅需dog,有时需多个”的需求。 - 相比嵌套列表推导式,这种写法更贴合你偏好的
braceexpand可读性风格,逻辑也更直观。
内容的提问来源于stack exchange,提问作者abra
相关产品推荐
相关产品推荐

