Как объединить несколько значений для аргумента, используя argparse
Я использую argparse
сделать инструмент командной строки для моей работы.
У меня есть требование, чтобы аргумент мог принимать несколько значений.
Аргумент может принимать только допустимые значения.
Допустимыми значениями могут быть любые комбинации значений из списка "ВСЕ".
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 ответ
Самое простое решение было бы включить ALL
это список допустимых вариантов, и используйте либо action='append'
или же nargs='*'
принять несколько значений. Я бы оставил интерпретацию ALL
пост-синтаксический анализ кода.
Как уже обсуждалось в других вопросах SO, попытка обработать разделенные запятыми подсписки - это боль.