Я пытаюсь создать хорошо отформатированные справочные сообщения для аргументов командной строки типа choice с помощью argparse Python. Для команды я разрешаю имя --operation и псевдоним -o. В настоящее время argparse печатает список параметров рядом с обоими в сообщении справки.
Обратите внимание, что этот вопрос отличается от вопроса о форматировании сообщений справки параметров (Эта проблемаздесь есть хороший ответ Anthon: Python argparse: Как вставить новую строку в текст справки? )
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-o', '--operation', help="operation to perform", type=str, choices=["create", "update", "delete"])
_StoreAction(option_strings=['-o', '--operation'], dest='operation', nargs=None, const=None, default=None, type=<class 'str'>, choices=['create', 'update', 'delete'], help='operation to perform', metavar=None)
>>> parser.print_help()
usage: [-h] [-o {create,update,delete}]
optional arguments:
-h, --help show this help message and exit
-o {create,update,delete}, --operation {create,update,delete}
operation to perform
>>>
Моя проблема заключается в этой строке:
-o {create,update,delete}, --operation {create,update,delete}
Очень неуклюже, как список вариантов повторяется дважды. Тем более, что у меня будут списки, которые еще длиннее. Я думаю, было бы лучше иметь это:
-o, --operation {create,update,delete}
Это, конечно, предполагает, что не существует какого-либо правила POSIX о том, как это должно работать. Я не думаю, что есть.
Как я могу достичь желаемого результата? Или есть веская причина, по которой я не должен пытаться это сделать?