将 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')
我正在尝试使用 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')