【问题标题】:Does Click support "bunching" short options together?Click 是否支持将短选项“捆绑”在一起?
【发布时间】:2021-04-18 04:01:17
【问题描述】:

某些命令行工具允许“捆绑”短选项。

例如,tar 命令采用短选项 -x-v-f filespec。 它允许将选项捆绑在一起,如 -xvf 文件规范 以避免空格破折号的多余输入。

阅读documentation for Click我找不到任何指示是否支持。

文档确实说支持替代前缀字符(如+w/-w),这往往表明它可能不受支持。

所以:

  1. click 是否支持将短选项捆绑在一起?

  2. 如果是这样,这是自动的,还是需要配置?

  3. 我应该使用什么搜索关键字来查找相关文档?

【问题讨论】:

    标签: python python-3.x command-line-interface python-click


    【解决方案1】:

    Click 绝对支持堆叠短标志选项。不确定是不是一定 记录在点击文档中,但这是标准的 POSIX 命令行约定 记录herewhy to use Click 的第二个要点:

    • 支持 Unix/POSIX 命令行约定的实现

    测试代码:

    import click
    
    @click.command()
    @click.option('-x', is_flag=True)
    @click.option('-y', is_flag=True)
    @click.option('-z')
    def cli(x, y, z):
        click.echo(f'x:{x}  y:{y}  z:{z}')
    
    
    if __name__ == "__main__":
        commands = (
            '-x',
            '-y',
            '-z 1',
            '-xz 2',
            '-yz 3',
            '-xyz 4',
            '-yx',
            '--help',
        )
    
        import sys, time
        time.sleep(1)
        print('Click Version: {}'.format(click.__version__))
        print('Python Version: {}'.format(sys.version))
        for cmd in commands:
            try:
                time.sleep(0.1)
                print('-----------')
                print('> ' + cmd)
                time.sleep(0.1)
                cli(cmd.split())
    
            except BaseException as exc:
                if str(exc) != '0' and \
                        not isinstance(exc, (click.ClickException, SystemExit)):
                    raise
    

    结果:

    Click Version: 7.1.2
    Python Version: 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)]
    -----------
    > -x
    x:True  y:False  z:None
    -----------
    > -y
    x:False  y:True  z:None
    -----------
    > -z 1
    x:False  y:False  z:1
    -----------
    > -xz 2
    x:True  y:False  z:2
    -----------
    > -yz 3
    x:False  y:True  z:3
    -----------
    > -xyz 4
    x:True  y:True  z:4
    -----------
    > -yx
    x:True  y:True  z:None
    -----------
    > --help
    Usage: test_code.py [OPTIONS]
    
    Options:
      -x
      -y
      -z TEXT
      --help   Show this message and exit.
    

    【讨论】:

      猜你喜欢
      • 2017-01-08
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 2012-03-17
      相关资源
      最近更新 更多