Pregunta

¿Por qué Argparse no analizará estos argumentos?

--foo 1 2 3 bar

Usando

parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')                  
parser.add_argument('bar')

que da el siguiente error:

Error: muy pocos argumentos

Sin embargo, si paso el argumento de la barra, funciona:

bar --foo 1 2 3   

Ahora, esto en sí mismo no es tan malo. Puedo vivir con los argumentos posicionales primero, es solo que este comportamiento es inconsistente con la ayuda que Argparse crea para nosotros, lo que establece que Bar debería ser el último:

Uso: argparsetest.py [-h] [-foo foo [foo ...]] bar

Entonces, ¿cómo haces que esto funcione con un texto de ayuda consistente?

Aquí hay un completo Programa de prueba.

¿Fue útil?

Solución

¿Quizás intente hacer - -Input --Output Flags y configurar esas opciones para requerir = true en el add_argument?

http://docs.python.org/dev/library/argparse.html#the-add-argument-method

Otros consejos

nargs='+' le dice a Argparse que reúna todos los args restantes juntos, así que bar está incluido. No tiene una forma mágica de adivinar que pretendes bar ser un argumento significativo por sí mismo y no parte de los args llevados a --foo.

El ejemplo en los documentos se refiere a un simple --foo argumento, no uno con nargs='+'. Asegúrese de comprender la diferencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top