2010-09-03 13 views
13

Obecnie, gdy wprowadzam nieprawidłowe opcje lub pomijam argumenty pozycyjne, argparse przekieruje mnie z powrotem do monitu i wyświetla użycie dla mojej aplikacji. Jest ok, ale wolałbym automatycznie wyświetlić pełną pomoc aukcji (który wyjaśnia opcje itp) niż wymagać od użytkownika, aby wpisaćpython argparse: Jak mogę wyświetlić pomoc automatycznie po błędzie?

./myscript.py -h

Dzięki!

Jamie

+0

patrz również to SO pytanie o więcej informacji [http://stackoverflow.com/questions/4042452][1] [1]: http://stackoverflow.com/questions/4042452 – jpoppe

Odpowiedz

13

Ten thread nad na grupach Google ma następujący fragment kodu, który wydaje się rade (lekko zmodyfikowane).

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

Czy nie byłoby użyteczne użycie 'self.print_help (sys.stderr)' tutaj? –

20

Aby wydrukować pomoc może chcesz używać: print_help funkcyjnego na ArgumentParser przykład

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

Aby wydrukować komunikat pomocy w przypadku błędu trzeba tworzyć własne podklasy ArgumentParser przykład, że nadpisuje error() metody. Na przykład tak:

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

Gdy parser napotyka unparseable argument wiersza zostanie wydrukowana pomocy.

Powiązane problemy