125 votes

Création d'arguments cachés avec Python argparse

Est-il possible d'ajouter un argument à un argparse.ArgumentParser en python sans qu'il n'apparaisse dans l'utilisation ou l'aide (script.py --help)?

179voto

srgerg Points 8142

Oui, vous pouvez définir l'option help sur add_argument sur argparse.SUPPRESS. Voici un exemple de la documentation d'argparse:

>>> parser = argparse.ArgumentParser(prog='frobble')
>>> parser.add_argument('--foo', help=argparse.SUPPRESS)
>>> parser.print_help()
usage: frobble [-h]

optional arguments:
  -h, --help  show this help message and exit

0 votes

Ensuite, cela apparaît simplement comme test ==SUPPRESS==. Au moins lorsqu'il est utilisé avec add_parser.

0voto

rob boudrie Points 25

Je le fais en ajoutant une option pour activer les options cachées, et en récupérant cela en regardant sys.argv.

Si vous faites cela, vous devez inclure l'argument spécial que vous avez extrait de sys.argv directement dans la liste d'analyse si vous supposez que l'option est -s pour activer les options cachées.

parser.add_argument('-a', '-axe',
                    dest="axe", action="store_true", default=False,
                    help="Faire tourner la terre")
if "-s" in sys.argv or "-secret" in sys.argv:
    parser.add_argument('-s', '-secret',
                        dest="secret", action="store_true", default=False,
                        help="Activer les options secrètes")
    parser.add_argument('-d', '-forage',
                        dest="forage", action="store_true", default=False,
                        help="forage, bébé, forage")

0 votes

Est-ce que sysv.args est une faute de frappe pour sys.argv?

0 votes

Voici une solution raisonnable (une fois que ma modification pour corriger les fautes de frappe est acceptée).

0 votes

Cela ne fonctionnera pas avec des commandes imbriquées, car vous ne savez pas où dans la hiérarchie le -s apparaît

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X