2010-09-03 11 views
13

Actuellement, lorsque j'entre des options invalides ou omets des arguments positionnels, argparse me renvoie à l'invite et affiche l'utilisation de mon application. Ceci est ok, mais je préfère afficher automatiquement l'aide complète la liste (qui explique les options, etc.) que l'utilisateur doit taperpython argparse: Comment afficher automatiquement l'aide en cas d'erreur?

./myscript.py -h

Merci!

Jamie

+0

voir aussi cette question SO pour plus d'informations: [http://stackoverflow.com/questions/4042452][1] [1]: http://stackoverflow.com/questions/4042452 – jpoppe

Répondre

13

Ce thread sur des groupes Google a l'extrait de code suivant qui semble faire l'affaire (légèrement modifiée).

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

Ne serait-il pas logique d'utiliser 'self.print_help (sys.stderr)' ici? –

20

Pour imprimer aide vous pouvez utiliser: la fonction print_help sur ArgumentParser exemple

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

Pour imprimer un message d'aide en cas d'erreur, vous devez créer votre propre sous-classe de ArgumentParser instance, qui remplace la méthode error(). Par exemple comme ceci:

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

Lorsque cet analyseur rencontre une ligne d'argument incomparable, il affichera de l'aide.