Я хотел бы написать скрипт Python под названием sync
, который имеет три или четыре режима работы, каждый из которых получает различное количество аргументов. Например,Python, argparse: разные параметры с различным количеством аргументов
sync set_version <build> <version_number>
sync get_version <build>
sync has_started <build_1> <build_2> ... <build_n>
Я попытался с помощью subparsers argparse
«s для каждого режима работы:
import argparse
parser = argparse.ArgumentParser(description='Build synchronization mechanism')
subparsers = parser.add_subparsers()
parser_get_version = subparsers.add_parser('get_version')
parser_get_version.add_argument('build')
parser_update_version = subparsers.add_parser('update_version')
parser_update_version.add_argument('build')
parser_update_version.add_argument('version')
args = parser.parse_args()
print args
Проблема заключается в том, что сообщение помощь не отражает структуру из аргументы каждого режима работы. Вместо этого он просто перечисляет режимы работы:
usage: sync.py [-h] {get_version,update_version} ...
Build synchronization mechanism
positional arguments:
{get_version,update_version}
optional arguments:
-h, --help show this help message and exit
Как заставить argparse отобразить полное сообщение справки, со всеми параметрами subparsers?
Это может быть актуально: http://stackoverflow.com/questions/14918804/how-to-show-help-for-all-subpasers-in-argparse – jsalonen
Возможно, вы захотите проверить ['docopt'] (http://docopt.org/) для этой работы - я хорошо разбираюсь в библиотеке. Вы даете описание в аналогичном стиле с помощью справки, которую вы обычно получаете, и оно автоматически анализирует аргументы командной строки в простой структуре данных и, как представляется, выводит справку по своему желанию. –