Luigi:有没有办法从命令行将 'false' 传递给 bool 参数?
Luigi: Is there a way to pass 'false' to a bool parameter from the command line?
我有一个 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
显然相同...
我知道我可以设置默认值 False 然后使用标志 --my_bool_param
如果我想设置它 True,但我更喜欢使用默认值 True。
有什么方法可以做到这一点,并且仍然从终端传递 False?
在 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
告诉Luigi在对MyLuigiTask
的终端调用中加入标志--my_bool_param false
,会被解析为store_false
.
现在我们可以拥有:
$ MyLuigiTask --my_bool_param false
False
我有一个 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
显然相同...
我知道我可以设置默认值 False 然后使用标志 --my_bool_param
如果我想设置它 True,但我更喜欢使用默认值 True。
有什么方法可以做到这一点,并且仍然从终端传递 False?
在 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
告诉Luigi在对MyLuigiTask
的终端调用中加入标志--my_bool_param false
,会被解析为store_false
.
现在我们可以拥有:
$ MyLuigiTask --my_bool_param false
False