2024-04-25 21:27:57 发布
网友
我想获取传递给sys.argv的所有参数,其格式为someprogram.py --someparameter 23 -p 42 -anotherparam somevalue。在
sys.argv
someprogram.py --someparameter 23 -p 42 -anotherparam somevalue
我要寻找的结果是一个包含所有变量的名称空间,已经解析过了。在
据我所知,argparse希望用户定义他期望的参数。在
有没有办法用argparse做到这一点? 谢谢!在
使用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()
您将自动获得帮助选项:
如果需要获取所有未知参数,可以通过以下方式从上下文获取它们:
@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)
如果您知道参数总是以 name value或-name value的格式给出,那么您可以很容易地做到这一点
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的实例中收集值
ArgHolder
使用Click我们可以构建这样一个命令:
您将自动获得帮助选项:
^{pr2}$如果需要获取所有未知参数,可以通过以下方式从上下文获取它们:
如果您知道参数总是以
name value
或-name value
的格式给出,那么您可以很容易地做到这一点现在您已经收集了类
ArgHolder
中的所有参数,该类是一个命名空间。您还可以在ArgHolder
的实例中收集值相关问题 更多 >
编程相关推荐