python - 具有附加值的 Argparse 参数

标签 python argparse

我创建了一个 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/

相关文章:

python - 通过添加开始和结束日期扩展数据框并用时间戳和 NaN 填充它

python - 使用 Python 获取 Youtube 数据

argparse - 使用 argparse 只接受一组必需的参数

python - 如果一个数据框中的日期在另一个数据框中的范围内,则分配值

python - 将 PIL 图像转换为 numpy 数组有时不起作用

Red Hat 上的 Python 和 Postgres

Python argparse 多个元变量名称

python - 访问传递给 argparse 参数的选项?

python - 参数解析 : ValueError when using --help or -h option with nargs

python - 如何在终端中创建换行符?