Spécifiez une sous-commande comme argument de ligne de commande en Python

introduction

J'écris souvent des commandes qui fonctionnent sur la ligne de commande en Python, mais parfois je veux écrire des sous-commandes comme git.

Pour git

$ git commit -m "test"

Ce commit est une sous-commande.

Créez cette sous-commande.

la mise en oeuvre

Si vous souhaitez analyser les arguments de commande en Python, utilisez le module ** argparse **.

15.4. argparse

  • Options de ligne de commande, arguments, analyseurs de sous-commandes - http://docs.python.jp/2.7/library/argparse.html?highlight=argparse#argparse

Normalement, vous importez la classe ** ArgumentParser ** depuis le module argparse. Définissez ensuite l'analyseur et ajoutez des options.

Temps normal :

normal.py


from argparse import argumentParser

parser = ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print args.accumulate(args.integers)

Vous devez imbriquer des analyseurs pour créer des sous-commandes. ** Vous pouvez définir des sous-commandes en installant un autre analyseur dans l'analyseur. ** **

subcmd.py


>>> from argparse import ArgumentParser
>>>
>>> # create the top-level parser
>>> parser = ArgumentParser(prog='PROG')
>>> parser.add_argument('--foo', action='store_true', help='foo help')
>>> subparsers = parser.add_subparsers(help='sub-command help')
>>>
>>> # create the parser for the "a" command
>>> parser_a = subparsers.add_parser('a', help='a help')
>>> parser_a.add_argument('bar', type=int, help='bar help')
>>>
>>> # create the parser for the "b" command
>>> parser_b = subparsers.add_parser('b', help='b help')
>>> parser_b.add_argument('--baz', choices='XYZ', help='baz help')
>>>
>>> # parse some arg lists
>>> parser.parse_args(['a', '12'])
Namespace(bar=12, foo=False)
>>> parser.parse_args(['--foo', 'b', '--baz', 'Z'])
Namespace(baz='Z', foo=True)

Créez un wrapper pour le sous-analyseur avec la méthode `` parser.add_subparsers ''

subparsers = parser.add_subparsers(help='sub-command help')

Créez un sous-analyseur à partir d'un wrapper.

parser_a = subparsers.add_parser('a', help='a help')

Donnez des arguments au sous-analyseur.

parser_a.add_argument('bar', type=int, help='bar help')

En passant, dans le cas de l'exemple ci-dessus, le message d'aide ressemble à ceci.

usage: PROG [-h] [--foo] {a,b} ...

positional arguments:
{a,b}       sub-command help
a         a help
b         b help

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

Vous pouvez maintenant créer des sous-commandes.

Recommended Posts

Spécifiez une sous-commande comme argument de ligne de commande en Python
Comment obtenir une chaîne à partir d'un argument de ligne de commande en python
Traitement des arguments de ligne de commande (docopt Python)
Décomposer les arguments de commande en une seule ligne en Python
Notes J'ai recherché la création d'outils de ligne de commande en Python
Modèle pour créer des applications de ligne de commande en Python
Comment recevoir des arguments de ligne de commande en Python
Créez un jeu Janken en une seule ligne (python)
Créez une application de ligne de commande en Python pour comprendre les actions setup.py, argparse et GitHub
Comment gérer les arguments lors de l'implémentation d'un script Python en tant qu'outil de ligne de commande
[API LINE Messaging] Créez un menu riche avec Python
Comment exécuter une commande à l'aide d'un sous-processus en Python
J'ai implémenté une commande de remplacement de type Vim dans Slackbot #Python
Créer une fonction en Python
Créer un dictionnaire en Python
Fizzbuzz en Python (en une ligne)
Exécuter des commandes externes avec python
Essayez LINE Notify avec Python
Créer un bookmarklet en Python
Exécution de commandes externes en Python
Dessinez un cœur en Python
Affichez des images DICOM avec Python rudimentaire en tant que professionnel de la santé
Autoriser l'installation des outils de ligne de commande en Python
Une histoire sur la façon de spécifier un chemin relatif en python.
L'image en échelle de gris est affichée sous forme d'image couleur dans OpenCV / Python
Comment spécifier des arguments de ligne de commande lors du débogage avec PyCharm
[python] Gérer les fonctions en les mettant dans un dictionnaire (table de commande, table de fonction, pointeur de fonction)
Probablement dans un serpent Nishiki (Titre original: Peut-être en Python)
Utilisez pymol comme bibliothèque python
[python] Fonction de rappel (passez la fonction en argument)
[python] Gérer les fonctions dans une liste
Définition du type d'argument de fonction en python
[Python] Créez un programme qui supprime les sauts de ligne dans le presse-papiers + Enregistrez-vous comme raccourci avec Windows
python Remarque: déterminez si l'argument de ligne de commande est dans la liste
Utilisez le tissu tel quel en python (fabric3)
Créer un conteneur DI avec Python
Exécutez la commande shell / Python dans R
Format lors du passage d'une longue chaîne comme argument de python
Dessinez une matrice de diagramme de dispersion avec python
ABC166 en Python A ~ C problème
Ecrire des algorithmes A * (A-star) en Python
Lire la sortie standard d'un sous-processus ligne par ligne en Python
Dans la commande python, python pointe vers python3.8
Créer un fichier binaire en Python
Enquêter sur ce qui pourrait être utilisé comme analyseur Markdown en Python
Utilisez Blender comme module Python
Résoudre ABC036 A ~ C avec Python
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python
Écrire une recherche de priorité en profondeur en Python
Implémentation d'un algorithme simple en Python 2
Résoudre ABC037 A ~ C avec Python
Lancer le script Python en service
Exécutez un algorithme simple en Python
Dessinez un diagramme CNN en Python
Créer une chaîne aléatoire en Python
Obtenez la formule dans le fichier Excel sous forme de chaîne en Python
J'ai essayé la notification de ligne en Python
[Introduction] Insérer des sauts de ligne dans Python 3
Implémenté en 1 minute! LINE Notify en Python