Python doit动态动作

Python doit动态动作,python,doit,Python,Doit,我正在使用并希望动态生成操作。以下代码创建了我希望doit执行的命令列表: dirs = ['a','b','c'] def task_build(): def create_cmd_string(directories=dirs): cmds = [] for dir in directories: cmds.append(f"rsync -a {dir} ../package") retu

我正在使用并希望动态生成操作。以下代码创建了我希望doit执行的命令列表:

dirs = ['a','b','c']

def task_build():

    def create_cmd_string(directories=dirs):
        cmds = []
        for dir in directories:
            cmds.append(f"rsync -a {dir} ../package")
        return cmds

    return {
        'actions': [
            "mkdir -p ../package",
            create_cmd_string,
        ],
        'verbosity': 2,
    }
唯一的问题是doit只运行列表中的第一个元素:

"rsync -a a ../package"
我希望它能做到以下几点:

"rsync -a a ../package"
"rsync -a b ../package"
"rsync -a c ../package"

我尝试过使用和传递不同的数据类型,但这两种方法都不起作用。我想下一个解决方案是创建,但感觉我遗漏了什么。

您的问题似乎是在另一个列表中添加了一个列表。 尝试:

'actions': ["mkdir -p ../package"] + create_cmd_string,