问题描述
我正在使用 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,