help
с вашим начальным определением:
usage: stack52580176.py [-h] -a A [A ...] -b B [B ...]
optional arguments:
-h, --help show this help message and exit
-a A [A ...] argument a
-b B [B ...] argument b
Строка использования показывает, что для -a
требуется хотя бы один аргумент;то же самое для -b
.
Да, 2 аргумента находятся в группе optional arguments
.Единственная альтернатива по умолчанию - positional arguments
.Не существует «обязательной» группы или «обязательной, но помеченной» группы.
Но замена ввода типа
python main.py -a a_1 a_2 -b b_1 b_2
на:
python main.py a=["a_1", "a_2"] b=["b_1", "b_2"]
будетнеудобно как для ваших пользователей, так и для вас самих.Потребуются дополнительные кавычки, чтобы оболочка не разбилась на все пробелы.И вам придется проанализировать строку 'a = ["a_1", "a_2"]' самостоятельно.
Но если вас беспокоит только имя группы, мы можем изменить это с помощью аргумент_группы * 1021.*
import argparse
parser = argparse.ArgumentParser()
g = parser.add_argument_group('required arguments:')
g.add_argument('-a', type=str, nargs='+', required=True,
help='argument a')
g.add_argument('-b', type=str, nargs='+', required=True,
help='argument b')
parser.print_help()
, который выдает:
usage: stack52580176.py [-h] -a A [A ...] -b B [B ...]
optional arguments:
-h, --help show this help message and exit
required arguments::
-a A [A ...] argument a
-b B [B ...] argument b
Если бы аргументы не были помечены как required
, использование имело бы дополнительные []:
usage: stack52580176.py [-h] [-a A [A ...]] [-b B [B ...]]
возможность указания required
(и «?») стирает обычное различие между optionals
и positionals
.У нас могут быть обязательные дополнительные и дополнительные позиции.