python argparse: Come posso visualizzare la guida automaticamente in caso di errore?
Domanda
Al momento quando entro opzioni non valide o omettere argomenti posizionali, argparse mi calci tornare al prompt e visualizza l'utilizzo per la mia app. Questo è ok, ma avrei preferito visualizzare automaticamente la piena messa in vendita di aiuto (che spiega le opzioni, ecc) che richiede all'utente di tipo
./myscript.py -h
Grazie!
Jamie
Soluzione
filo 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)
Altri suggerimenti
Per stampare aiuto si potrebbe desiderare di utilizzare: la funzione print_help
su istanza ArgumentParser
parser = argparse.ArgumentParser()
(...)
parser.print_help()
Per stampare un messaggio di aiuto in caso di errore è necessario creare propria sottoclasse di esempio ArgumentParser
, tale metodo override error()
. 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.