argparse subparser帮助显示

时间:2015-02-04 22:18:57

标签: python argparse

我似乎无法获得subparser help命令来正确显示他们的帮助。 如果我command.py -h,我会得到完整的帮助菜单,但子命令/子分析器帮助没有显示。

  • command.py search -h打印父帮助
  • command.py import -h也会打印父帮助

当我输入command.py import -h时,我想要import子命令的帮助屏幕,而不是父帮助。

我似乎无法弄清楚遗失/破碎的原因。

parser = argparse.ArgumentParser(description = 'description', epilog='some epilog', add_help=True)
parser.add_argument('username', help='username')
parser.add_argument('apikey', help='API key')
parser.add_argument('--host', default=host, help='set the API host.  Defaults to %s' % host)
parser.add_argument('--port', default=port, type=int, help='set the API port.  Defaults to %s' % port)
parser.add_argument('--tls', dest='tls', action='store_true', help='set TLS (default value)')
parser.add_argument('--notls', dest='tls', action='store_false', help='turn off TLS')
parser.add_argument('--proxy', help='proxy url example: https://username:password@some.proxyserver.com:8080')
parser.add_argument('--type', default='https', choices=['http', 'https'], help='set proxy type')
parser.set_defaults(tls=True)
subparsers = parser.add_subparsers(title='subcommands', description='valid subcommands', help='sub-command help')
search_subparser = subparsers.add_parser('search', help='search help')
search_subparser.add_argument('--itype', choices=valid_intel_type, help='restrict by intelligence type')
search_subparser.add_argument('--severity', choices=valid_severity, help='restrict by severity')
search_subparser.add_argument('--classification', choices=valid_classification, help='restrict by classification')
search_subparser.add_argument('--status', choices=valid_status, help='parse by status')
search_subparser.add_argument('--output', choices=['json', 'csv'], default=output, help='output format.  Defaults to %s' % output)
import_subparser = subparsers.add_parser('import', help='import help')
import_subparser.add_argument('file', help='file of indicators to import')
import_subparser.add_argument('itype', choices=valid_intel_type, help='intelligence type to import')
import_subparser.add_argument('--classification', default='private', choices=valid_classification, help='set classification level for import')
import_subparser.add_argument('--confidence', default=30, type=int, help='set cconfidence level for import')
import_subparser.add_argument('--severity', default='medium', choices=valid_severity, help='set severity level for import')
import_subparser.add_argument('--notes', default=None, nargs='*', help='set analyst notes for import file')
args = parser.parse_args()

1 个答案:

答案 0 :(得分:2)

对于使用多个位置参数的任何人来说,答案是你必须提供位置参数和子命令。

就我而言:

command.py <username> <apikey> search -h

或:

command.py <username> <apikey> import -h