可选的python参数没有破折号但有附加参数?
发布时间:2020-11-17 08:44:57 所属栏目:Python 来源:互联网
导读:我想在 Python中做的是接受以下格式的参数: script.py START | STOP | STATUS | MOVEABS x y | MOVEREL x y 换句话说, 我不想处理连字符; 我有多种可能性,其中一种是必需的; 每个都是互相排斥的; 某些命令(E.G.mobabs和moverel)具有其他必需参数,但这些参数
我想在 Python中做的是接受以下格式的参数: script.py START | STOP | STATUS | MOVEABS <x> <y> | MOVEREL <x> <y> 换句话说, >我不想处理连字符; 这可以在python中完成,我会使用argparse还是别的?谢谢. 解决方法add_parser和subparsers可以解决问题import argparse parser = argparse.ArgumentParser(prog='script.py') sp = parser.add_subparsers(dest='cmd') for cmd in ['START','STOP','STATUS']: sp.add_parser(cmd) for cmd in ['MOVEABS','MOVEREL']: spp = sp.add_parser(cmd) spp.add_argument('x',type=float) spp.add_argument('y',type=float) parser.print_help() args = parser.parse_args() print(args) 产生如下: 2137:~/mypy$python2.7 stack23304740.py MOVEREL -h usage: script.py [-h] {START,STOP,STATUS,MOVEABS,MOVEREL} ... positional arguments: {START,MOVEREL} optional arguments: -h,--help show this help message and exit usage: script.py MOVEREL [-h] x y positional arguments: x y optional arguments: -h,--help show this help message and exit 和 2146:~/mypy$python2.7 stack23304740.py MOVEREL 1.0 2.0 ... Namespace(cmd='MOVEREL',x=1.0,y=2.0) 和 2147:~/mypy$python2.7 stack23304740.py START ... Namespace(cmd='START') MOVEREL参数可以命名为< x>和< y>,但是你必须通过args [‘< y>‘]而不是args.y来访问它们. metavar = ‘< X>’可用于更改显示但不能更改命名空间名称. 你也可以使用spp.add_argument(‘point’,nargs = 2,type = float).不幸的是,有一个错误阻止我们在这个nargs = 2的情况下使用metavar,http://bugs.python.org/issue14074. (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – 你的字符串’与’string’相同.代码(‘XXX’)
- 如何在Python网站中找到未使用的代码?
- django,壁球迁移,太多循环依赖
- python基于multiprocessing的多进程创建方法
- Python 3:接收用户输入,包括换行符
- python标准算法实现数组全排列的方法
- Python使用metaclass实现Singleton模式的方法
- python – Numpy相当于if / else list comprehension
- Django:如何在内联formset中显示每个模型对象的表单错误
- python – gcloud.exceptions.Forbidden:403权限丢失或不足