python argparse: Comment puis-je afficher automatiquement l'aide en cas d'erreur?

StackOverflow https://stackoverflow.com/questions/3636967

  •  30-09-2019
  •  | 
  •  

Question

À l'heure actuelle quand j'entre des options non valides ou omettez arguments de position, argparse me kicks retour à 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 demander à l'utilisateur type

./myscript.py -h

Merci!

Jamie

Était-ce utile?

La solution

Ce fil sur les 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)

Autres conseils

Pour imprimer l'aide que vous pourriez vouloir utiliser: fonction print_help sur l'instance ArgumentParser

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

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

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 la ligne d'argument Unparseable il imprimera aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top