我有一个用Python的点击库构建的命令行工具。我希望将此工具扩展为使用用户定义的关键字,如下所示:
$ my-cli --foo 10 --bar 20通常,我会在命令中添加以下代码
@click.option('--foo', type=int, default=0, ...)然而,在我的例子中,有几个关键字是用户定义的。我不知道用户想要提前对foo或bar或其他东西进行消毒。
一个解决方案
目前,我最好的解决方案是使用字符串并执行自己的解析。
$ my-cli --resources "foo=10 bar=20"这是可行的,但稍微不那么愉快。
发布于 2016-11-22 19:15:43
我认为这应该是可行的:
import click
@click.command(context_settings=dict(ignore_unknown_options=True,))
@click.option('-v', '--verbose', is_flag=True, help='Enables verbose mode')
@click.argument('extra_args', nargs=-1, type=click.UNPROCESSED)
def cli(verbose, extra_args):
"""A wrapper around Python's timeit."""
print(verbose, extra_args)
if __name__ == "__main__":
cli()测试:
$ python test.py --foo 12
False ('--foo', '12')
$ python test.py --foo 12 -v
True ('--foo', '12')来自:http://click.pocoo.org/5/advanced/#forwarding-unknown-options
https://stackoverflow.com/questions/40748513
复制相似问题