将 argparse 与指定的可接受选项一起使用

Using argparse with a specified acceptable option

我正在尝试使用 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 是否具有完成此任务的内置方法。我查看了 nargs,但不太清楚这是否是我需要走的路

我想你问的是 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')