Python doit 动态动作

问题描述

我正在使用 Python 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"

我尝试使用 CmdAction 并传入不同的数据类型,但这些方法都不起作用。我想下一个解决方案是创建 dynamic subtasks,但我觉得我错过了一些东西。

解决方法

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...