2015-06-17 14 views
5

voglio distinguere fra questi tre casi:argparse valore opzionale per argomento

  • La bandiera non è presente a tutte python example.py;
  • Il flag è presente ma senza valore python example.py -t; e
  • Il flag è presente e ha un valore python example.py -t ~/some/path.

Come posso farlo con Python argparse? I primi due casi saranno coperti da action='store_true' ma il terzo caso non sarà più valido.

risposta

6

Si può fare questo con nargs='?':

Un argomento sarà consumato dalla riga di comando, se possibile, e prodotto come un singolo elemento. Se non è presente alcun argomento della riga di comando, verrà prodotto il valore predefinito. Si noti che per gli argomenti facoltativi, , esiste un caso aggiuntivo: la stringa di opzioni è presente ma non seguita da un argomento della riga di comando. In questo caso verrà prodotto il valore da const .

I suoi tre casi darebbe:

  1. Il valore default;
  2. Valore const; e rispettivamente
  3. '~/some/path'

.