pitón argparse: ¿Cómo puedo mostrar la ayuda de forma automática en caso de error?
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
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.