pitón argparse: ¿Cómo puedo mostrar la ayuda de forma automática en caso de error?

StackOverflow https://stackoverflow.com/questions/3636967

  •  30-09-2019
  •  | 
  •  

Pregunta

En la actualidad cuando entro opciones no válidas u omitir argumentos posicionales, argparse me patadas volver a la línea y muestra el uso de mi aplicación. Esto está bien, pero prefiero mostrar automáticamente la ayuda completa lista (que explica las opciones, etc.) que requiere que el usuario escriba

./myscript.py -h

Gracias!

Jamie

¿Fue útil?

Solución

hilo 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)

Otros consejos

Para imprimir ayuda es posible que desee utilizar: función print_help en la instancia ArgumentParser

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

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

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top