我正在尝试使用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是否有内置的方法来完成这个任务。我看了一下这些问题,但是如果那条路是我需要走下去的话,那就不太清楚
答案 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')