doit正在运行dodo.py中的每个函数。我可以改变吗?

时间:2019-03-28 15:38:37

标签: python python-2.7 doit

我正在尝试使流自动化,并且遇到了“ 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”的消息。

1 个答案:

答案 0 :(得分:0)

从文档中

  

以名称task_开头的函数定义了任务创建者   被doit认可。这些函数必须返回(或屈服)   代表任务的字典。

doit需要执行这些功能才能获取任务定义,并知道必须执行哪些任务。因此,您应该以{{1​​}}开头来命名实用程序函数,除非有必要,否则不要在任务函数中打印,例如用于调试。