Как изменить значение метавара для nargs = * в argparse? - PullRequest
0 голосов
/ 06 июля 2018

Я хочу изменить значение, которое указывается после опции -args в сообщении помощи, на «arg1 arg2 ..» вместо «[arg [arg ...]]».

Я попытался изменить значение метавара, но он только изменяет вывод на "[arg1 arg2 ... [arg1 arg2 ... ...]]".

Вот мой код: -

arg_parser.add_argument('-args', action='store', default=None, nargs='*' ,dest='arg',
                        help = "arguments passed to the program.")  

и точный вывод: -
-args [arg [arg ...]] arguments passed to the program.

вывод, который я хочу: -
-args [arg1 arg2 ..] arguments passed to the program

Ответы [ 2 ]

0 голосов
/ 07 июля 2018

Используя метавар = ('arg1', 'arg2') ', кортеж должен отобразить

[arg1 ... [arg2 ...]]

[] и ... зафиксированы для '*'. «nargs = 2» производит более простое отображение.

Кроме того, вы должны создать подкласс Formater и сделать операцию.

0 голосов
/ 06 июля 2018

Вы можете сделать args позиционным аргументом вместо необязательного, удалив -:

parser.add_argument('args', nargs='*',
    help = "[arg1 arg2 ..] arguments passed to the program.")  

Поскольку для вашего nargs установлено значение *, это на самом деле ничего не меняет с точки зрения того, когда командная строка может быть успешно обработана или нет.

Список необязательных значений ([arg [arg ...]]) не отображается для позиционных аргументов, только для имени. Используя help, как указано выше, введите свой текст и получите желаемое:

positional arguments:  
  args        [arg1 arg2 ..] arguments passed to the program.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...