可选的python参数没有破折号但有附加参数?

可选的python参数没有破折号但有附加参数?,第1张

概述我想在 Python中做的是接受以下格式的参数: script.py START | STOP | STATUS | MOVEABS <x> <y> | MOVEREL <x> <y> 换句话说, >我不想处理连字符; >我有多种可能性,其中一种是必需的; >每个都是互相排斥的; >某些命令(E.G.mobabs和moverel)具有其他必需参数,但这些参数不应与任何其他参数一起出现. 这可以在p 我想在 Python中做的是接受以下格式的参数:
script.py START | Stop | STATUS | MOVEABS <x> <y> | MOVEREL <x> <y>

换句话说,

>我不想处理连字符;
>我有多种可能性,其中一种是必需的;
>每个都是互相排斥的;
>某些命令(E.G.mobabs和moverel)具有其他必需参数,但这些参数不应与任何其他参数一起出现.

这可以在python中完成,我会使用argparse还是别的?谢谢.

解决方法 add_parser和subparsers可以解决问题
import argparseparser = 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 -husage: script.py [-h] {START,Stop,STATUS,MOVEABS,MOVEREL} ...positional arguments:  {START,MOVEREL}optional arguments:  -h,--help            show this help message and exitusage: script.py MOVEREL [-h] x ypositional arguments:  x  yoptional 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.

总结

以上是内存溢出为你收集整理的可选的python参数没有破折号但有附加参数?全部内容,希望文章能够帮你解决可选的python参数没有破折号但有附加参数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1207309.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存