[英]argparse for unknown number of arguments and unknown names
我想获取传递给sys.argv
所有格式的参数
someprogram.py --someparameter 23 -p 42 -anotherparam somevalue
。
结果我正在寻找的是一个包含所有已解析变量的名称空间。
据我了解,argparse期望用户定义他期望的参数。
用argparse可以做到吗? 谢谢 !
如果您知道参数将始终以--name value
或-name value
的格式给出,则可以轻松实现
class ArgHolder(object):
pass
name = None
for x in sys.argv[1:]:
if name:
setattr(ArgHolder, curname, x)
name = None
elif x.startswith('-'):
name = x.lstrip('-')
现在,您将已在ArgHolder
的类中收集了所有参数。 您也可以在ArgHolder
实例中收集值
使用Click,我们可以构建这样的命令:
import click
@click.command(help="Your description here")
@click.option("--someparameter", type=int, help="Description of someparameter")
@click.option("--p", type=int, help="Description of p")
@click.option("--anotherparam", type=str, help="Description of anotherparam")
def command(someparameter, p, anotherparam):
pass
if __name__ == '__main__':
command()
您将自动获得一个帮助选项:
$ python command.py --help
Usage: command.py [OPTIONS]
Your description here.
Options:
--someparameter INTEGER Description of someparameter.
...
--help Show this message and exit.
如果需要获取所有未知参数,则可以通过以下方式从上下文中获取它们:
@click.command(context_settings=dict(
ignore_unknown_options=True,
allow_extra_args=True,
), add_help_option=False)
@click.pass_context
def command(ctx):
click.echo(ctx.args)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.