如何使用子文件夹模板在cookiecutter模板中创建多个子文件夹

时间:2020-02-02 10:18:56

标签: python cookiecutter

我想为我们的内部项目创建一个模板。

项目的布局包含可变数量的子文件夹。

我想在一些配置文件中指定要创建的子文件夹。 例如,我具有以下文件夹结构:

my_project
|
|___ Tables
|  |
|  |__ Table1    <--- The folders I would like to create
|  |__ Table2    <---|
|  |__ Table3    <---|
|
|___ Other_folders

配置文件应具有以下内容:

{
  "prj_name": "my_project",
  "tables": ["Table1", "Table2", "Table3"]
}

我试图创建以下结构:

{{cookiecutter.prj_name}}
|
|___ Tables
|  |
|  |__ {% for table in cookiecutter.tables %}{{table}}{% endfor %}
|
|___ Other_folders

并将上述配置添加到cookiecutter.json

我使用--no-input运行cookiecutter。结果只有一个子文件夹(表1)。

还尝试使用以下文件夹名称:{% for table in cookiecutter.tables.keys() %}{{table}}{% endfor %} 使用以下配置:

{
  "prj_name": "my_project",
  "tables": {
    "table1": "table1",
    "table2": "table2",
    "table3": "table3"
  }
}

输出仍然是单个子文件夹(Table2Table1Table3)

有什么想法可以实现所需的结构吗?

1 个答案:

答案 0 :(得分:2)

好吧,我最终编写了一个Python脚本,该脚本使用Cookiecutter's package functions和两个模板文件夹。

一个用于主项目的模板文件夹,一个用于表文件夹的模板文件夹。

该脚本将使用cookiecutter.main.cookiecutter函数创建主项目,并在循环中创建子文件夹。

我在博客中写了更详细的文章。 不确定此处有关发布指向个人博客链接的规则。因此,如果将来有人希望看到它,请在评论中告诉我。