Luigi:有没有办法从命令行将'false'传递给布尔参数?



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

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

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

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

显然false0一样...

我知道如果我想将其设为 True,我可以将默认设置为False,然后在--my_bool_param使用标志,但我更喜欢默认True

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

在 Luigi 文档中找到了解决方案:

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告诉 Luigi,将终端调用中的标志--my_bool_param false添加到MyLuigiTask中,将被解析为store_false

现在我们可以拥有:

$ MyLuigiTask --my_bool_param false
False

最新更新