Quello che sto facendo ora è semplicemente controllare la lunghezza di args, se è 0, dire all'utente di digitare -h.Guida all'utilizzo di Optparser-print quando non viene fornito alcun argomento
C'è un modo migliore per farlo? Grazie
Quello che sto facendo ora è semplicemente controllare la lunghezza di args, se è 0, dire all'utente di digitare -h.Guida all'utilizzo di Optparser-print quando non viene fornito alcun argomento
C'è un modo migliore per farlo? Grazie
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
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.
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
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)
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()
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()
Sto usando optparse – thinkanotherone
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