如何使用argparse

时间:2015-10-23 10:43:14

标签: python argparse

我正在使用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>

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是将ALL包含在允许的选项列表中,并使用action='append'nargs='*'接受多个值。我将ALL的解释留给后解析代码。

正如在其他SO问题中所讨论的那样,尝试处理以逗号分隔的子列表是一种痛苦。