举个例子:
#thing.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--show", nargs='?', action="store")
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
如何区分以下用法:
python thing.py
python thing.py --show
python thing.py --show all
Run Code Online (Sandbox Code Playgroud)
基本上,如果符合以下条件,我想做不同的事情:
default="foo"在add_argument中使用不起作用,因为它在测试时总是存在 - 我无法知道用户是否实际指定了选项"--show".
使用constkwarg.如果未指定该选项,default将使用.如果选项是const单独提供的,则将使用.如果为该选项提供值,则将使用该值.
从文档中复制:
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', nargs='?', const='c', default='d')
>>> parser.add_argument('bar', nargs='?', default='d')
>>> parser.parse_args(['XX', '--foo', 'YY'])
Namespace(bar='XX', foo='YY')
>>> parser.parse_args(['XX', '--foo'])
Namespace(bar='XX', foo='c')
>>> parser.parse_args([])
Namespace(bar='d', foo='d')
Run Code Online (Sandbox Code Playgroud)