2010-09-03 7 views
13

Actualmente, cuando ingreso opciones inválidas u omito argumentos posicionales, argparse me devuelve al aviso y muestra el uso de mi aplicación. Esto está bien, pero prefiero mostrar automáticamente la ayuda lista completa (que explica las opciones, etc.) que requieren que el usuario escribapython argparse: ¿Cómo puedo mostrar la ayuda automáticamente en caso de error?

./myscript.py -h

Gracias!

Jamie

+0

ver también esta pregunta SO para obtener más información: [http://stackoverflow.com/questions/4042452][1] [1]: http://stackoverflow.com/questions/4042452 – jpoppe

Respuesta

13

Este thread más en los grupos de Google tiene el siguiente fragmento de código que parece hacer el truco (ligeramente modificado).

class DefaultHelpParser(argparse.ArgumentParser): 
    def error(self, message): 
     sys.stderr.write('error: %s\n' % message) 
     self.print_help() 
     sys.exit(2) 
+3

¿No tendría sentido usar 'self.print_help (sys.stderr)' aquí? –

20

Para imprimir ayuda es posible que desee utilizar: print_help función de ArgumentParser ejemplo

parser = argparse.ArgumentParser() 
(...) 
parser.print_help() 

Para imprimir el mensaje de ayuda en caso de error es necesario crear una subclase de ArgumentParser ejemplo, que anula error() método. Por ejemplo así:

class MyParser(argparse.ArgumentParser): 
    def error(self, message): 
     sys.stderr.write('error: %s\n' % message) 
     self.print_help() 
     sys.exit(2) 

Cuando esta línea de argumento analizador encuentra unparseable se imprimirá ayuda.

Cuestiones relacionadas