我有一个Python doit脚本,其任务是生成文件。文件名根据任务参数而变化。
有什么方法可以将这些文件包括在JSON.stringify({data})
列表中?
不幸的是,任务参数没有填充到目标名称字符串中。
targets
示例任务:
'targets': ['targetfile{version}']
示例命令行:
def task_dynamic():
return {
'actions': ['touch targetfile{version}'],
'params': [
{
'name': 'version',
'short': 'v',
'default': '0'
}
],
'targets': []
}
答案 0 :(得分:1)
您可以在actions
(just pass the magic parameter task
)或自定义uptodate
上动态修改任务属性,即
DOIT_CONFIG = {
'action_string_formatting': 'new',
}
def set_target(task, values):
version = task.options.get('version', '0')
task.targets.append(f'targetfile{version}')
def task_dynamic():
return {
'actions': ['touch targetfile{version}'],
'params': [
{
'name': 'version',
'short': 'v',
'default': '0'
}
],
'uptodate': [set_target],
}
有一项建议的更改,可以使此操作更容易实现,请参见问题#311
答案 1 :(得分:0)
有一个不理想的解决方案:我将动态输出放在具有稳定名称的目录中,然后在我的targets
列表中引用该目录。