【发布时间】:2017-03-12 11:37:03
【问题描述】:
我正在尝试在 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,将使用您的默认值。 -
我明白了...除了我需要告诉它列出、创建、删除等这一事实之外,这可行。
-
听起来你想要subcommands,根本不是开关。即使使用
nargs='?',您也无法区分--list和默认设置时不传递任何内容。
标签: python python-3.x argparse