Как объединить несколько значений для аргумента, используя 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, попытка обработать разделенные запятыми подсписки - это боль.

Другие вопросы по тегам