我正在使用argparse
为我的工作制作命令行工具
我有一个要求,其中一个参数应该能够采取多个值。
论证只能采用合法的价值观。
合法值可以是来自列表的值的任意组合,“ALL”。
sample.py :
import argparse
sample_list = ["a", "b", "c"]
parser = argparse.ArgumentParser()
parser.add_argument('-M', '--Module', choices=sample_list, default=default_module, help='specify the Module name')
args = parser.parse_args()
使用上述方法允许的值为:
python sample.py -M a
我希望该用户能够输入:
python sample.py -M a,b
<ok>
python sample.py -M ALL
<ok>
python sample.py -M D
<error>
如何实现这一目标?
答案 0 :(得分:0)
最简单的解决方案是将ALL
包含在允许的选项列表中,并使用action='append'
或nargs='*'
接受多个值。我将ALL
的解释留给后解析代码。
正如在其他SO问题中所讨论的那样,尝试处理以逗号分隔的子列表是一种痛苦。