python - Click 是否支持将短选项“捆绑”在一起?
问题描述
某些命令行工具允许“捆绑”短选项。
例如,该tar
命令采用短选项-x
、-v
和-f
filespec。它允许选项像-xvf
filespec一样捆绑在一起,以避免空格破折号的多余输入。
阅读Click 的文档时,我找不到任何指示是否支持此功能。
文档确实说支持替代前缀字符(如+w/-w
),这往往表明它可能不受支持。
所以:
是否
click
支持将空头选项捆绑在一起?如果是这样,这是自动的,还是需要配置?
我应该使用什么搜索关键字来查找相关文档?
解决方案
Click 绝对支持堆叠短标志选项。不确定它是否一定记录在点击文档中,但这是一个标准的 POSIX 命令行约定,如此处所述。为什么要使用 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.
推荐阅读
- google-cloud-platform - GCP Dataflow vCPU 使用率和定价问题
- vuejs2 - 即使部署成功,也将 Vue.js 应用程序部署到 gitlab 页面
- c# - IsMouserOver 干扰 WPF 中的 IsSelected
- python - 基于更多数据帧的预测
- oracle - 如何在 Oracle Reports 中正确对齐框架内的对象
- javascript - jquery函数在表的第二页上不起作用
- c# - 在同一解决方案中找不到引用项目的类型或命名空间
- java - 在“docker run imagename”命令上按顺序(不是同时)运行多个 Jar 文件
- c++ - 在 C++ 中获取旋转的音高
- c++ - clang 插件:在编译期间修改 AST