2011-11-15 12 views

risposta

4

Non è chiaro dalla domanda se si sta utilizzando il modulo (deprecato) optparse o il suo sostituto, il modulo argparse. Supponendo che quest'ultimo, purché abbia almeno un argomento posizionale, lo script stamperà un messaggio di utilizzo se non vengono forniti argomenti (o argomenti insufficienti).

Ecco uno script di esempio:

import argparse 

parser = argparse.ArgumentParser(description="A dummy program") 
parser.add_argument('positional', nargs="+", help="A positional argument") 
parser.add_argument('--optional', help="An optional argument") 

args = parser.parse_args() 

Se corro questo senza alcun argomento, ottengo questo risultato:

usage: script.py [-h] [--optional OPTIONAL] positional [positional ...] 
script.py: error: too few arguments 
+0

Sto usando optparse – thinkanotherone

+0

Il modulo optparse è stato progettato attorno al concetto di riga di comando _options_ e quindi non ti dà molto aiuto con gli argomenti posizionali o richiesti (vedi la documentazione collegata alla risposta di divad12 e la mia). Il modo appropriato per verificare gli argomenti posizionali è controllare gli argomenti restituiti da 'optparse.parseargs()' che sembra essere quello che stai già facendo. – srgerg

1

Partenza http://docs.python.org/library/optparse.html

Si dovrebbe fare ciò che gli utenti di solito si aspettano da applicazioni a riga di comando - quando viene dato -h bandiera, mostrerà aiuto utilizzo.

+0

voglio solo fare il mio strumento di un po 'più flessibile per le persone che potrebbero non avere familiarità con gli strumenti della riga di comando. – thinkanotherone

14

si può fare con optparse bene. Non hai bisogno di usare argparse.

if options.foo is None: # where foo is obviously your required option 
    parser.print_help() 
    sys.exit(1) 
4

Grazie per @forkchop per il suggerimento parser.print_help() !!!

quindi penso che potrebbe essere così?

import optparse 
parser = optparse.OptionParser() 
... 
options, remainder = parser.parse_args() 
if len(sys.argv[1:]) == 0: 
    print "no argument given!" 
    parser.print_help() 
2

Ecco come ho gestito questo approccio prima:

import optparse 
parser = optparse.OptionParser() 
... 
if len(sys.argv) == 1: # if only 1 argument, it's the script name 
    parser.print_help() 
    exit() 
Problemi correlati