Optparse, la versión anterior simplemente ignora todos los argumentos no reconocidos y continúa. En la mayoría de las situaciones, esto no es ideal y se cambió en argparse. Pero hay algunas situaciones en las que desea ignorar cualquier argumento no reconocido y analizar los que ha especificado.
Por ejemplo:
parser = argparse.ArgumentParser()
parser.add_argument('--foo', dest="foo")
parser.parse_args()
$python myscript.py --foo 1 --bar 2
error: unrecognized arguments: --bar
¿Hay alguna forma de sobrescribir esto?

Respuestas:
Reemplazar
con
Por ejemplo,
fuente
parse_known_argsparser.parse_args(None)lugar deparser.parse_args([])en mis pruebas.parse_known_argslugar deparse_argshabilitar el uso delArgumentParsercódigo dentro del alcance deif __name__ == 'main':(una condición que esTruepara todas las celdas en un Cuaderno IPython ... que encuentro ayuda mucho al código de desarrollo y prueba que quiero migrar eventualmente a un script invocado desde una línea de comando)Puede colocar las partes restantes en un nuevo argumento con
parser.add_argument('args', nargs=argparse.REMAINDER)si desea usarlas.fuente
parse_args()y no requiereparse_known_args()(en Python 2.7).En realidad, argparse todavía "ignora"
_unrecognized_args. Mientras estos argumentos "no reconocidos" no usen el prefijo predeterminado , no escuchará ninguna queja del analizador.Usando la configuración de @ anutbu pero con el estándar
parse.parse_args(), si tuviéramos que ejecutar nuestro programa con los siguientes argumentos.Tendremos esta recopilación de datos de espacio de nombres para trabajar.
Si quisiéramos
-ignorar el prefijo predeterminado , podríamos cambiar el ArgumentParser y decidir que vamos a utilizar a+para nuestros argumentos "reconocidos".El mismo comando producirá
Pon eso en tu pipa y fúmalo =)
nJoy!
fuente