Python点击模块is_flag不能按预期工作

时间:2018-08-03 14:08:25

标签: python

根据点击documentation的方法,可以使用两种方法来指定布尔标志。 “开/关”方法:

@click.option('--shout/--no-shout', default=False)

和“ is_flag”方法:

@click.option('--shout', is_flag=True)

我没有这种行为。首先是代码。

import click


@click.command()
@click.option('--one/--no-one', default=False, help='on/off')
@click.option('--two', is_flag=False, help='is_flag')
def foo(one, two):
    print(one, two)


if __name__ == '__main__':
    foo()

下面的会话显示第二个选项“ two”是一个字符串参数,而不是布尔标志。

$ python foo.py --help
Usage: foo.py [OPTIONS]

Options:
  --one / --no-one  on/off
  --two TEXT        is_flag
  --help            Show this message and exit.
$ python foo.py --two
Error: --two option requires an argument
$ python foo.py --two a
False a
$ python foo.py --one
True None
$ python foo.py --no-one
False None

我使用不正确吗?

我使用的是6.7和:

$ python --version
Python 3.5.3 :: Anaconda 4.4.0 (x86_64)
$ uname -a
Darwin tardis 16.7.0 Darwin Kernel Version 16.7.0: Fri Apr 27 17:59:46 PDT 2018; root:xnu-3789.73.13~1/RELEASE_X86_64 x86_64

1 个答案:

答案 0 :(得分:2)

您指定了is_flag=False,这意味着它不是标志。将两个点击选项更改为:

@click.option('--two', is_flag=True, help='is_flag')