Я хочу создать программу «установки», которые вы можете назвать так:Python argparse групп путаницы
installer install PROGRAM
installer install PROGRAM MY_DIR
installer list
Я пытаюсь поручить argparse так, что вы необходим Установщик вызова либо install
или list
, список не требует аргументов, а для установки требуется установка программы и, при необходимости, целевой каталог. Это то, что я до сих пор:
import argparse
parser = argparse.ArgumentParser(prog="installer")
parser.add_argument('action', choices=['install', 'list'], help='install|list', type=str)
subparsers = parser.add_subparsers()
install_group = subparsers.add_parser('install', help='install program')
install_group.add_argument('program_name', help='name of the program to install', type=str)
install_group.add_argument('destination_dir', help='where to install the program', nargs='?', type=str)
list_group = subparsers.add_parser('list', help="list available programs")
args = parser.parse_args()
Проблема заключается в том, что помощь генерироваться не кажется, чтобы отразить это:
# python installer.py --help
usage: installer [-h] {install,list} {install,list} ...
positional arguments:
{install,list} install|list
{install,list}
install install program
list list available programs
optional arguments:
-h, --help show this help message and exit
помощь для python installer.py install --help
это то же самое. Нет упоминания destination_dir или program_name
Любая помощь?
Да, как указано в вопросе, он jusy дает тот же результат. – pistacchio
Вы можете поместить 'subparsers' в группу аргументов, предоставив ему' title': parser.add_subparsers (title = 'actions', description = 'a description', help = 'a help') – hpaulj