使用argparse需要python命令行参数的帮助

时间:2011-12-10 22:57:45

标签: python argparse

我需要一些关于使用argparse的帮助。我想要实现的是我只需要传递一个参数,它可以是以下之一:--k, --r, --b, --p,(ignore the rest)。如果参数计数不是1,则打印“使用”信息并退出。程序还需要知道传入哪个标志才能创建相应的对象。我尝试了好几次但是我没有工作,有人能给我一个暗示吗?感谢。

2 个答案:

答案 0 :(得分:4)

您需要使用的是mutually exclusive group

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)。

答案 1 :(得分: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