我正在尝试使流自动化,并且遇到了“ doit”问题,因为它正在运行dodo.py中的所有函数,我不希望它这样做。
我正在使用“ doit”功能处理Python 2.7。以下是dodo.py文件中的部分代码。问题是,当我尝试运行“ doit list”(doit的基本功能)时,它还会从我的函数中打印这2条消息。
我尝试设置DOIT_CONFIG,尝试使用“ uptodate:[True]”,但这些都不起作用。
我在网上读到python正在分两步执行命令。第一步,它运行所有功能,然后运行您编写的命令。
我想问的是有没有办法禁用此“功能”?我只想运行“ doit list”而不调用任务“ setup”和“ test”,因为任务“ test”正在打印文本并正在等待输入,即使“ doit list”不需要它们。>
有没有办法告诉“ doit”不要执行某些功能,除非我调用它们?由于没有依赖关系,我认为应该有一种方法,但是我找不到它。
def task_setup():
print("Doing setup")
a = 3
return a
def task_test():
items = os.listdir(pd_audit_path)
fileList = []
for names in items:
if names.startswith(pd_step):
fileList.append(names)
cnt = 0
for fileName in fileList:
sys.stdout.write( "[%d] %s\n\r" %(cnt, fileName) )
cnt = cnt + 1
fileName = int(input("\n\rSelect run [0 - " + str(cnt - 1) + "]: "))
path = fileList[fileName]
return {
'file_dep': [],
'actions': ['The path is: %s',%(path)],
'params':[{'name':'all', 'long': 'all', 'type': bool,
'default': True, 'help': 'all relevant reports'},],
'verbosity': 2,
}
当我调用“ doit list”时,我期望包含dodo.py中所有任务的列表,但是它还会打印来自任务“ setup”和“ test”的消息。
答案 0 :(得分:0)
从文档中
以名称task_开头的函数定义了任务创建者 被doit认可。这些函数必须返回(或屈服) 代表任务的字典。
doit需要执行这些功能才能获取任务定义,并知道必须执行哪些任务。因此,您应该以{{1}}开头来命名实用程序函数,除非有必要,否则不要在任务函数中打印,例如用于调试。