2010-09-03 10 views
13

Attualmente quando inserisco opzioni non valide o ometto gli argomenti posizionali, argparse mi restituisce il prompt e visualizza l'utilizzo per la mia app. Questo è ok, ma avrei preferito visualizzare automaticamente messa in vendita l'aiuto completo (che spiega le opzioni, ecc) che richiede all'utente di digitarepython argparse: come posso visualizzare la guida automaticamente in caso di errore?

./myscript.py -h

Grazie!

Jamie

+0

vedi anche questa domanda SO per maggiori informazioni: [http://stackoverflow.com/questions/4042452][1] [1]: http://stackoverflow.com/questions/4042452 – jpoppe

risposta

13

Questo thread oltre a gruppi di Google ha il seguente frammento di codice che sembra fare il trucco (leggermente modificato).

class DefaultHelpParser(argparse.ArgumentParser): 
    def error(self, message): 
     sys.stderr.write('error: %s\n' % message) 
     self.print_help() 
     sys.exit(2) 
+3

Non avrebbe senso usare 'self.print_help (sys.stderr)' qui? –

20

Per stampare aiuto si potrebbe desiderare di utilizzare: print_help funzione ArgumentParser esempio

parser = argparse.ArgumentParser() 
(...) 
parser.print_help() 

Per stampare messaggio di aiuto in caso di errore è necessario creare propria sottoclasse di ArgumentParser esempio, che sostituisce error() metodo. Per esempio così:

class MyParser(argparse.ArgumentParser): 
    def error(self, message): 
     sys.stderr.write('error: %s\n' % message) 
     self.print_help() 
     sys.exit(2) 

Quando questo parser incontra linea argomento di analizzarlo verrà stampata aiuto.

Problemi correlati