float - python3 arg parser
Python argparse ignora argumentos no reconocidos (3)
En realidad, argparse todavía "ignora" _unrecognized_args
. Siempre que estos argumentos "no reconocidos" no usen el prefijo predeterminado , no escuchará quejas 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.
$ program --foo BAR a b +cd e
Tendremos esta colección de datos de Espacio de nombres para trabajar.
Namespace(_unrecognized_args=[''a'', ''b'', ''+cd'', ''e''], foo=''BAR'')
Si quisiéramos usar el prefijo predeterminado -
ignorado, podríamos cambiar ArgumentParser y decidir que vamos a usar un +
para nuestros argumentos "reconocidos" en su lugar.
parser = argparse.ArgumentParser(prefix_chars=''+'')
parser.add_argument(''+cd'')
El mismo comando producirá
Namespace(_unrecognized_args=[''--foo'', ''BAR'', ''a'', ''b''], cd=''e'')
Ponlo en tu pipa y fumate =)
nJoy!
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 modificó en argparse. Pero hay algunas situaciones en las que desea ignorar los argumentos no reconocidos 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 sobreescribir esto?
Puede poner las partes restantes en un nuevo argumento con parser.add_argument(''args'', nargs=argparse.REMAINDER)
si desea usarlas.
Reemplazar
args = parser.parse_args()
con
args, unknown = parser.parse_known_args()
Por ejemplo,
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(''--foo'')
args, unknown = parser.parse_known_args([''--foo'', ''BAR'', ''spam''])
print(args)
# Namespace(foo=''BAR'')
print(unknown)
# [''spam'']