我有一个Luigi
任务,其布尔参数默认设置为True:
class MyLuigiTask(luigi.Task):
my_bool_param = luigi.BoolParameter(default=True)
当我从终端运行此任务时,我有时想将该参数作为False传递,但得到以下结果:
$ MyLuigiTask --my_bool_param False
error: unrecognized arguments: False
显然false
和0
一样...
我知道如果我想将其设为 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