2012-01-24 9 views
6

¿Cómo puedo desactivar las opciones de subcomando de impresión, las que están entre llaves? Utilizando un ejemplo en http://docs.python.org/dev/library/argparse.html#sub-commands, la salida normal es:En el módulo argparse de python, ¿cómo puedo desactivar las opciones de subcomando de impresión entre llaves?

usage: [-h] {foo,bar} ... 

optional arguments: 
-h, --help show this help message and exit 

subcommands: 
{foo,bar} additional help 

Lo que yo quiero es imprimir esta:

usage: [-h] {foo,bar} ... 

optional arguments: 
-h, --help show this help message and exit 

subcommands: 

Extracción sólo la última línea.

Respuesta

0

Sobreescriba ArgumentParser.print_usage() con su propio método para imprimir lo que desee, como quiera. Si todo lo que quiere hacer es eliminar la última línea, llamar a la versión original, capturar los resultados (enviándola a un archivo) e imprimir solo la (s) parte (s) que desee.

6

Para evitar el correo no deseado a mis usuarios con la enorme y fea lista de docenas de subcomandos, simplemente configuré el atributo metavar del objeto del subcomando. Mi código es el siguiente:

import argparse 
parser = argparse.ArgumentParser(description='Stack Overflow example') 
subs = parser.add_subparsers() 
subs.metavar = 'subcommand' 
sub = subs.add_parser('one', help='does something once') 
sub = subs.add_parser('two', help='does something twice') 
parser.parse_args() 

Y la salida de la ejecución de este script con un solo argumento -h es:

El resultado no es exactamente lo que ilustras como su mejor caso deseado, pero creo que puede ser lo más cercano que pueda obtener sin subclasificar argparse.ArgumentParser y anular las cosas que necesita ajustar, lo que sería un trabajo complicado.

Cuestiones relacionadas