SystemExit: error 2 al llamar a parse_args ()

Estoy aprendiendo los conceptos básicos de Python y ya me quedé atascado al comienzo del tutorial de Argparse. Estoy recibiendo el siguiente error:

import argparse parser = argparse.ArgumentParser() args = parser.parse_args() usage: __main__.py [-h] echo __main__.py: error: unrecognized arguments: -f An exception has occurred, use %tb to see the full traceback. SystemExit: 2 

un comando% tb da el siguiente resultado:

  SystemExit Traceback (most recent call last)  in () ----> 1 args = parser.parse_args() C:\Users\Haik\Anaconda2\lib\argparse.pyc in parse_args(self, args, namespace) 1702 if argv: 1703 msg = _('unrecognized arguments: %s') -> 1704 self.error(msg % ' '.join(argv)) 1705 return args 1706 C:\Users\Haik\Anaconda2\lib\argparse.pyc in error(self, message) 2372 """ 2373 self.print_usage(_sys.stderr) -> 2374 self.exit(2, _('%s: error: %s\n') % (self.prog, message)) C:\Users\Haik\Anaconda2\lib\argparse.pyc in exit(self, status, message) 2360 if message: 2361 self._print_message(message, _sys.stderr) -> 2362 _sys.exit(status) 2363 2364 def error(self, message): SystemExit: 2 

¿Cómo podría solucionar este problema? Gracias

argparse es un módulo diseñado para analizar los argumentos pasados ​​desde la línea de comandos , por ejemplo, si escribe lo siguiente en el símbolo del sistema:

 $ python my_programme.py --arg1=5 --arg2=7 

Puede usar argparse para interpretar la parte --arg1=5 --arg2=7 . Si argparse piensa que los argumentos no son válidos, se cierra, lo que en general se hace en python llamando a sys.exit() que genera el error SystemExit , que es lo que está viendo.

Entonces, el problema es que estás tratando de usar argparse desde un intérprete interactivo (parece ipython), y en este punto el progtwig ya se ha iniciado, por lo que los argumentos ya deberían haber sido analizados.

Para probarlo correctamente, cree un archivo python separado como my_programme.py y ejecútelo usando python desde una línea de comando, como my_programme.py .

parse_args método parse_args , cuando se llama sin argumentos, intenta analizar el contenido de sys.argv . Su proceso de intérprete ha llenado sys.argv con valores que no coinciden con los argumentos admitidos por su instancia del parser , por eso el análisis falla.

Intente imprimir sys.argv para verificar qué argumentos se pasaron a su proceso de intérprete.

Intente llamar a parser.parse_args(['my', 'list', 'of', 'strings']) para ver cómo funcionará el analizador para el intérprete iniciado con diferentes argumentos de cmdline.