Domanda

Perché Argparse non analizziamo questi argomenti?

--foo 1 2 3 bar

Usando

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

che fornisce il seguente errore:

Errore: troppo pochi argomenti

Se approvo prima l'argomento del bar, funziona:

bar --foo 1 2 3   

Ora, questo in sé non è poi così male. Posso vivere con gli argomenti di posizione prima è solo che questo comportamento è incompatibile con l'aiuto che ArgParse crea per noi, che afferma che la barra dovrebbe essere l'ultima:

Utilizzo: ArgParetest.py [-H] [--foo foo [foo ...]] bar

Quindi, come fai a far funzionare questo testo con un aiuto coerente?

Ecco un completo Programma di prova.

È stato utile?

Soluzione

Forse provare a fare -Input -Output Flags e impostazione di queste opzioni su richiesto = true nel add_argument?

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

Altri suggerimenti

nargs='+' dice ad Argparse di raccogliere insieme tutti gli argomini rimanenti, quindi bar è incluso. Non ha un modo magico per indovinare bar essere un argomento significativo da solo e non parte degli args presi --foo.

L'esempio nei documenti si riferisce a un semplice --foo argomento, non uno con nargs='+'. Assicurati di capire la differenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top