usage - python command line arguments library




Flag di riga di comando argparse di Python senza argomenti (3)

Aggiungere uno snippet rapido per averlo pronto per l'esecuzione:

Fonte: myparser.py

import argparse
parser = argparse.ArgumentParser(description="Flip a switch by setting a flag")
parser.add_argument('-w', action='store_true')

args = parser.parse_args()
print args.w

Uso:

python myparser.py -w
>> True

Come aggiungo una bandiera opzionale al mio arg di riga di comando?

per esempio. così posso scrivere

python myprog.py 

o

python myprog.py -w

Provai

parser.add_argument('-w')

Ma ricevo solo un messaggio di errore che dice

Usage [-w W]
error: argument -w: expected one argument

che io prendo significa che vuole un valore argomento per l'opzione -w. Qual è il modo di accettare una bandiera?

Sto trovando http://docs.python.org/library/argparse.html piuttosto opaco su questa domanda.


Come hai fatto, l'argomento w sta aspettando un valore dopo -w sulla riga di comando. Se stai solo cercando di capovolgere un interruttore impostando una variabile True o False , dai un'occhiata a http://docs.python.org/dev/library/argparse.html#action (in particolare store_true e store_false)

parser.add_argument('-w', action='store_true')

Modifica: come sottolineato da Sven, un valore predefinito in questo caso è superfluo.


mentre si aggiunge l'argomento a parser, action = "store_true" flag imposta il valore predefinito per l'argomento su True. Quindi parser.add_argument ('- w', action = "store_true") dovrebbe risolvere l'errore.







argparse