¿Hay alguna forma de que argparse.ArgumentParser.parse_args () no salga en los errores de argumento?

Por ejemplo:

import argparse parser = arparse.ArgumentParser() # parser.add_argument(...) ... args = parser.parse_args(args_list) 

El problema es que parser.parse_args se cierra automáticamente si hay un error en args_list . ¿Hay una configuración que haga que se genere una excepción más amigable? No quiero tener que capturar un SystemExit y extraer el mensaje de error necesario si hay alguna forma de SystemExit .

Usted podría usar

 args, unknown = parser.parse_known_args(args_list) 

Entonces, cualquier argumento desconocido será simplemente devuelto en unknown .

Por ejemplo,

 import argparse parser = argparse.ArgumentParser() parser.add_argument('--bar', action='store_true') parser.add_argument('cheese') args, unknown = parser.parse_known_args(['--swallow', 'gouda', 'african']) print(args) # Namespace(bar=False, cheese='gouda') print(unknown) # ['--swallow', 'african']