В пакете argparse параметр metavar
изменяет отображаемое справочное сообщение программы.Следующая программа не предназначена для работы, она просто используется для демонстрации поведения параметра metavar
.
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(description = "Print a range.")
parser.add_argument("-range1", nargs = 3, type = int, help = "Specify range with: start, stop, step.", metavar = ("start", "stop", "step"))
parser.add_argument("-range2", nargs = 3, type = int, help = "Specify range with: start, stop, step.", metavar = "r2")
Соответствующее сообщение справки:
usage: main.py [-h] [-range1 start stop step] [-range2 r2 r2 r2]
Print a range.
optional arguments:
-h, --help show this help message and exit
-range1 start stop step
Specify range with: start, stop, step.
-range2 r2 r2 r2 Specify range with: start, stop, step.
Обратите вниманиеразличия за -range1
и -range2
.Ясно, что -range1
является предпочтительным способом сообщения помощи.
До этого момента мне все было ясно.Однако, если я изменю необязательный аргумент -range1
на позиционный аргумент range1
, argparse не сможет работать с кортежем параметра metavar
(ValueError: too many values to unpack
).
Единственный способ, которым ясмог получить его работа была в пути -range2
сделано.Но тогда справочное сообщение далеко не так хорошо, как в случае -range1
.
Есть ли способ получить такое же справочное сообщение, что и в случае -range1
, но для позиционного аргумента вместоопционально