我创建了一个 argparse 参数,它只支持 3 种选择:
parser.add_argument('--param', default='ch1', choices=('ch1', 'ch2', 'ch3'), help='message')
但我必须添加一个新的特殊选择 ch4
,这将需要一个额外的值。
即,我的程序应该支持这样的输入:
./prog.py --param ch1
./prog.py --param ch2 # or ch3
./prog.py --param ch4='some_additional_variable'
我如何才能实现这一点(或一些类似的行为)?
最佳答案
您可以通过 requiring an additional argument 解决它如果设置了 ch4
参数:
import argparse
parser = argparse.ArgumentParser(description='...')
parser.add_argument('--param', default='ch1', choices=('ch1', 'ch2', 'ch3', 'ch4'))
parser.add_argument('--setting', help="Required if param is set to ch4")
args = parser.parse_args()
if args.param == "ch4" and not args.setting:
parser.error("--setting is required if param is ch4")
用法:
$ python test.py --param ch1
$ python test.py --param ch2
$ python test.py --param ch3
$ python test.py --param ch4
usage: test.py [-h] [--param {ch1,ch2,ch3,ch4}] [--setting SETTING]
test.py: error: --setting is required if param is ch
$ python test.py --param ch4 --setting "some_value"
$
关于python - 具有附加值的 Argparse 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202998/