multiple - python argparse: ¿Cómo puedo mostrar la ayuda automáticamente en caso de error?
python flags example (2)
Actualmente, cuando ingreso opciones no válidas u omito argumentos posicionales, argparse me devuelve la solicitud y muestra el uso de mi aplicación. Esto está bien, pero prefiero mostrar automáticamente la lista de ayuda completa (que explica las opciones, etc.) que requerir que el usuario escriba
./myscript.py -h
¡Gracias!
Jamie
Este thread en los grupos de Google tiene el siguiente fragmento de código que parece hacer el truco (modificado ligeramente).
class DefaultHelpParser(argparse.ArgumentParser):
def error(self, message):
sys.stderr.write(''error: %s/n'' % message)
self.print_help()
sys.exit(2)
Para imprimir la ayuda, es posible que desee utilizar: la función print_help
en la instancia ArgumentParser
parser = argparse.ArgumentParser()
(...)
parser.print_help()
Para imprimir un mensaje de ayuda en caso de error, debe crear una subclase propia de la instancia ArgumentParser
, que anula el método error()
. 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 este analizador encuentra una línea de argumento no analizable, imprimirá la ayuda.