Я хочу, чтобы пользователь предоставил конфигурационный параметр, указав в качестве аргумента 4-значное число. Каждая цифра соответствует состоянию True
или False
для конкретной установки A
, B
, C
, или D
.Синтаксический анализатор командной строки 4-значного числа в качестве аргумента со многими комбинациями (Python)
A B C D
0 1 0 0 # would indicate that the user wants B setting only
1 1 0 1 # would indicate that the user wants the A, B and D settings
Существует 16 таких комбинаций параметров.
Затем я буду принимать этот аргумент и обрабатывать его по буквам.
Я думал, что-то вроде этого, где я заявляю, все допустимые значения:
import argparse
argparser = argparse.ArgumentParser(
description= "blah blah"
)
argparser.add_argument(
"-cs", "configuration_setting",
choices=["1111", "1110", ..., "0001", "0000"] # all 16 combinations
dest="config_setting"
)
есть ли более эффективный (или более «вещий») подход к обработке всех 16 возможных choices
? Должен ли я использовать choices
, а просто получить 3-буквенный ввод, а затем обработать его? Обратите внимание, что меня интересует, как проверить, что пользователь предоставил допустимый ввод.
Почему бы вам не указать пользователю каждый вариант отдельно? Чтобы включить тип 'A'' -A' и т. Д. Таким образом, каждый параметр конфигурации может иметь свое собственное описание, и, поскольку вы разбиваете двоичную строку вручную в любом случае, она не добавляет слишком много накладных расходов. – Wombatz
'choice' эффективен, поскольку все, что он делает, это тест' in choice'. Но посмотрели ли вы на дисплей справки? Альтернативы - это пользовательская функция 'type', или post parsing testing. Все они «пифонические». – hpaulj