2015-07-17 8 views
8

Sto cercando di utilizzare il mio programma con l'opzione della riga di comando. Qui è il mio codice:Python argparse: "argomenti non riconosciuti"

import argparse 

def main(): 

    parser = argparse.ArgumentParser() 
    parser.add_argument("-u","--upgrade", help="fully automatized upgrade") 
    args = parser.parse_args() 

    if args.upgrade: 
     print "Starting with upgrade procedure" 
main() 

Quando si tenta di eseguire il mio programma dal terminale (python script.py -u), mi aspetto di ottenere il messaggio Starting with upgrade procedure, ma invece ricevo il messaggio di errore unrecognized arguments -u.

+0

non sto vedendo alcun messaggio di errore e sto ottenendo l'output expecpted ; Penso che potrebbe essere a causa dello spazio, scheda nel tuo programma Si prega di verificare che [viswesn.viswesn-PC] ➤ python script.py -u 10 A partire dalla procedura di aggiornamento [viswesn.viswesn-PC] ➤ python script.py -u utilizzo: script.py [-h] [-u UPGRADE] script.py: errore: argomento -u/- aggiornamento: previsto un argomento – Viswesn

+2

L'unico problema qui, è che '-u' si aspetta un valore o qualche tipo. prova a fare 'python myscript.py -u True' – Torxed

risposta

9

L'errore che si ottiene è dovuto al fatto che -u si aspetta un certo valore dopo di esso. Se usi python script.py -h lo troverai nella dichiarazione di utilizzo che dice [-u UPGRADE].

Se si desidera utilizzarlo come booleano o bandiera (vero se -u viene utilizzato), aggiungere un ulteriore parametro action:

parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action="store_true") 

action - Il tipo di base di azioni da intraprendere quando si incontra questo argomento nella riga di comando

Con action="store_true", se viene specificata l'opzione -u, il valore vero è assegnato a args.upgrade. Non specificarlo implica False.

Fonte: Python argparse documentation

3

Attualmente, il vostro argomento richiede un valore da passare in per esso pure.

Se si desidera invece -u come opzione, utilizzare lo action='store_true' per gli argomenti che non richiedono un valore.

Esempio -

parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action='store_true') 
Problemi correlati