使用具有指定可接受选项的argparse

时间:2016-02-03 17:45:37

标签: python argparse

我正在尝试使用argparse接受所需的命令行选项。我已经定义了一个像这样的函数

def get_args():
    parser = argparse.ArgumentParser(description='Help Desk Calendar Tool')
    parser.add_argument('-s', '--start', type=str, required=True, metavar='YYYY-MM-DD')
    parser.add_argument('-e','--end', type=str, required=True, metavar='YYYY-MM-DD')
    parser.add_argument('-m','--mode', type=str, required=True , metavar='add|del')
    args = parser.parse_args()

    start = args.start
    end = args.end
    mode = args.mode
    return start,end,mode

我想要做的是选项--mode我希望它只接受add或del的参数。我可以从if语句中做到这一点但是想知道argparse是否有内置的方法来完成这个任务。我看了一下这些问题,但是如果那条路是我需要走下去的话,那就不太清楚

1 个答案:

答案 0 :(得分:3)

我认为你在询问choices

parser.add_argument('-m','--mode', type=str, required=True, choices=['add', 'del'])

演示:

$ python test.py -s 10 -e 20 -m invalid
usage: test.py [-h] -m {add,del}
test.py: error: argument -m/--mode: invalid choice: 'invalid' (choose from 'add', 'del')