Python argparse需要eith

2024-10-03 13:30:40 发布

您现在位置:Python中文网/ 问答频道 /正文

运行脚本时,必须传递-g-s。对于下面的代码,它使用传递给它的参数抛出以下错误。在

{~/nsnitro}-> ./sg-arg.py status -g test.server
usage: sg-arg.py [-h] (-g SERVICEGROUP | -s SERVICENAME) {status} ...
sg-arg.py: error: one of the arguments -g/--servicegroup -s/--servicename is required

代码:

^{pr2}$

Tags: 代码pytest脚本参数serverstatus错误
1条回答
网友
1楼 · 发布于 2024-10-03 13:30:40

您将互斥组添加到错误的解析器中。换句话说,对于您所拥有的调用,正确的调用应该是./sg-arg.py -g test.server status(注意,参数出现在subparser声明之前)。在

要解决这个问题,您需要将互斥组添加到子parser中,并将参数添加到该组中。这似乎有效:

import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()

check = subparsers.add_parser('status')
check_mutex = check.add_mutually_exclusive_group(required=True)
check_mutex.add_argument('-g', ' servicegroup', action='store', help='servicegroup name')
check_mutex.add_argument('-s', ' servicename', action='store', help='service name')

args = parser.parse_args()

例如

^{pr2}$

相关问题 更多 >