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_args
parser.parse_args(None)
lugar deparser.parse_args([])
en mis pruebas.parse_known_args
lugar deparse_args
habilitar el uso delArgumentParser
código dentro del alcance deif __name__ == 'main':
(una condición que esTrue
para 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