我正在尝试在Python 3应用程序中使用argparse,其中有一个明确的选择列表,但如果没有指定任何选项,则有默认值。
我的代码如下:
parser.add_argument('--list', default='all', choices=['servers', 'storage', 'all'], help='list servers, storage, or both (default: %(default)s)')
args = parser.parse_args()
print(vars(args))
然而,当我运行此代码时,我会得到以下带有选项的结果:
$ python3 ./myapp.py --list all
{'list': 'all'}
或者不带选项:
$ python3 ./myapp.py --list
usage: myapp.py [-h] [--list {servers,storage,all}]
myapp.py: error: argument --list: expected one argument
我是否漏掉了什么?或者说我不能在指定选择项时设置默认值吗?
--list
,则会使用默认设置。 - ShadowRangernargs='?'
,当有默认设置时,你也无法区分--list
和不传递任何内容的区别。 - ShadowRanger