我需要一些关于使用 argparse 的帮助。我想要实现的是我只需要传入一个参数,它可以是以下之一:--k, --r, --b, --p,(ignore the rest)
. 如果参数计数不是 1,则打印“使用”信息并退出。此外,程序需要知道传入哪个标志才能创建相应的对象。试了好几次都不行,有大神指点一下吗?谢谢。
问问题
176 次
2 回答
4
您需要使用的是一个互斥组:
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-k', action='store_true')
group.add_argument('-r', action='store_true')
group.add_argument('-b', action='store_true')
group.add_argument('-p', action='store_true')
parser.parse_args()
从下面的例子中可以看出,一个互斥组中同时只允许一个选项:
$ python test.py -k -r -b -p
usage: test.py [-h] [-k | -r | -b | -p]
test.py: error: argument -r: not allowed with argument -k
要检查传递了哪个标志,您只需要查看方法argparse.Namespace
返回的对象parse_args
(传递的标志将设置为True
)。
于 2011-12-10T23:12:33.847 回答
3
完全不用怎么argparse
办?似乎真的没有必要。
if len(sys.argv) != 2:
print_usage()
arg = sys.argv[1]
if arg not in ["--k", "--r", "--b", "--p"]:
print_usage()
# Do whatever you want with arg
于 2011-12-10T23:01:28.920 回答