Luigi:是否可以通过命令行将“ false”传递给bool参数?

时间:2020-01-21 13:41:56

标签: python terminal luigi

我有一个Luigi任务,其布尔参数默认设置为 True

class MyLuigiTask(luigi.Task):
    my_bool_param = luigi.BoolParameter(default=True) 

当我从终端运行此任务时,有时我想将该参数传递为 False ,但得到以下结果:

$ MyLuigiTask --my_bool_param False
error: unrecognized arguments: False  

显然false0 ......

我知道我可以将默认设置为 False ,然后将标记--my_bool_param设置为 True ,但我更喜欢默认为 True

有没有办法做到这一点,并且仍然从终端传递 False

1 个答案:

答案 0 :(得分:2)

Luigi docs中找到了解决方案:

class MyLuigiTask(luigi.Task):
    my_bool_param = luigi.BoolParameter(
        default=True, 
        parsing=luigi.BoolParameter.EXPLICIT_PARSING)

    def run(self):
        print(self.my_bool_param)

EXPLICIT_PARSING告诉路易吉,在终端调用中向--my_bool_param false添加标志MyLuigiTask将被解析为store_false

现在我们可以拥有:

$ MyLuigiTask --my_bool_param false
False