最近学习使用python中的argparse模块,发现其中添加带有choices位置参数后,在命令栏调用-h后会显示choices的选项但不显示参数名,如果用metavar指定显示参数名后,又只显示参数名而不显示choices选项,请问有什么可以同时显示两者的办法吗
```python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('model', metavar='model', help='模型类型', choices=['SVM', 'ANN', 'CNN'])
parser.add_argument('mode', help='调用模式', choices=['Trian', 'Test'])
args = parser.parse_args()
# argparseTest.py -h
# positional arguments:
# model 模型类型 # 只显示metavar,不显示选项
# {Trian,Test} 调用模式 # 只显示choices,不显示参数名
#
# optional arguments:
# -h, --help show this help message and exit
```
使用 argparse
模块来实现这个功能,可以参考下面的例子:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-n", "--name", help="display name")
parser.add_argument("-a", "--age", help="display age")
args = parser.parse_args()
if args.name:
print("Hello, " + args.name)
if args.age:
print("You are " + args.age + " years old.")
使用该代码时,可以使用 -h
或 --help
参数来显示帮助信息,包括参数名和可选项。例如:
$ python myscript.py -h
usage: myscript.py [-h] [-n NAME] [-a AGE]
optional arguments:
-h, --help show this help message and exit
-n NAME display name
-a AGE display age
在使用命令行运行该脚本时,可以指定要使用的参数和可选项。例如:
$ python myscript.py -n John -a 30
Hello, John
You are 30 years old.