2010-07-13 21 views
12

Eventuali duplicati:
What's the best way to grab/parse command line arguments passed to a Python script?Come analizzare gli argomenti della riga di comando in Python?

Mi piacerebbe essere in grado di analizzare gli argomenti della riga di comando nel mio programma Python 2.6.

Idealmente, voglio essere in grado di gestire questi casi:

# Show some help 
./myprogram --help 

# These are equivalent 
./myprogram --block=1 
./myprogram -b 1 

# This means verbose, and twice as verbose: 
./myprogram -v 
./myprogram -vv 

risposta

32

Controllare il modulo argparse (o optparse per le versioni precedenti di Python).
Si noti che argparse/optparse sono sostituzioni più recenti e migliori per getopt, quindi se siete nuovi a questo sono l'opzione consigliata. Dalle getopt documentazione:

Nota Il modulo getopt è un parser per le opzioni della riga di comando la cui API è progettato per essere familiare agli utenti di C getopt() function. Gli utenti che non hanno familiarità con la funzione C getopt() o che desiderano scrivere meno codice e ottenere aiuto e messaggi di errore migliori dovrebbero prendere in considerazione l'uso del modulo argparse.

+1

E per "versioni di Python anziani", egli intende ogni versione che è stata rilasciata più di 8 giorni fa. –

+6

@Forest - shhhh, siamo nel futuro ora! ;) – tzaman

+3

E col passare del tempo, questa risposta diventa sempre più corretta. – jcdyer

3

Python ha elaborazione argomento integrato, con il modulo getopt.

Può gestire lunghe e brevi forme di argomenti, nonché versioni "nude" e parametrizzate (--help versus --num=7).

Per i vostri casi d'uso specifici (con un po 'di più), si sarebbe probabilmente essere alla ricerca di qualcosa di simile:

opts,args = getopt.getopt(argv,"b:vVh",["block=", "verbose", "very-verbose", "help"]) 

Non sono sicuro che la parte superiore della mia testa se permette a più caratteri varianti a trattino singolo come -vv. Vorrei solo usare -v e -V per semplificarmi la vita.

1

Una soluzione migliore rispetto a quella di collegamento è l'optparse moduli o getopt, e, a seconda della versione di Python che si sta utilizzando, il più recente ones..2.7, e 3.1.2, hanno un modulo ancora più recente costruito nel La documentazione sul riferimento ufficiale a python.org ha un insieme molto informativo di documentazione ed esempi per quei moduli. Se vai su python.org e fai una rapida ricerca di OptParse o GetOpt, avrai tutto ciò che ti serve.

1

optfunc è un piccolo modulo interessante. È fantastico se vuoi scrivere velocemente una piccola sceneggiatura. Per cose più grandi vorrei andare con argparse come altri hanno scritto.

-4

Ci potrebbe essere un modo migliore, ma vorrei solo utilizza sys.argv e mettere in condizionali ovunque sia necessario cioè

if '--v' or '--vv' in sys.argv : 
    print 'verbose message' 
Problemi correlati