Agregue opciones no especificadas al comando cli usando python-click

Me gustaría agregar opciones no especificadas al comando cli usando la biblioteca python-click. Así que mi función cli podría parecerse a la siguiente

$ my-cmd --option1 value1 --options2 value2 --unknown_var value3 

Mi código actual:

 import click @click.option('--option1') @click.option('--option2') @click.command(name='my-cmd') def cli(option1, option2): click.echo("my test") 

Me gustaría ver algo como lo siguiente:

 import click @click.option('--option1') @click.option('--option2') @click.command(name='my-cmd') def cli(option1, option2, **kwargs): click.echo("my test") # Manually manage **kwargs 

Puede pasar el context con las ignore_unknown_options y allow_extra_args , los argumentos adicionales se recostackrán en la lista context.args ( ['--unknown_var', 'value3', '--unknown_var2', 'value4'] ). Entonces puedes transformarlo a dictado.

 import click @click.command(name='my-cmd', context_settings=dict( ignore_unknown_options=True, allow_extra_args=True, )) @click.option('--option1') @click.option('--option2') @click.pass_context def cli(ctx, option1, option2): click.echo({ctx.args[i][2:]: ctx.args[i+1] for i in xrange(0, len(ctx.args), 2)}) 

ejemplo

 python cli.py --option1 value1 --option2 value2 --unknown_var value3 --unknown_var2 value4 >> {'unknown_var2': 'value4', 'unknown_var': 'value3'} 

Consulte Reenvío de opciones desconocidas .