[PYTHON] Créez une sous-sous-commande à l'aide de la commande click --netsted sub-sub -

Aperçu

Lors de la création d'un outil de ligne de commande à l'aide d'un outil d'analyse de ligne de commande en python, les modules utilisés sont grossièrement divisés en trois.

Puisque argparse est une bibliothèque standard, il a l'avantage de pouvoir être utilisé sans réfléchir, et comme click n'est pas un module standard, il est facile d'implémenter des choses difficiles à implémenter avec une bibliothèque standard.

Comme je n'ai jamais utilisé le feu et que cet article n'est pas destiné à présenter des outils d'analyse de ligne de commande, j'omettreai ici d'autres comparaisons et explications.

Comment créer une sous-commande en utilisant click

La méthode de création d'une sous-commande à l'aide de click est la suivante.

Si vous souhaitez créer un programme qui fonctionne réellement, ce sera comme suit.

import click

@click.group()
def cli():
    pass

@cli.command()
def initdb():
    click.echo('Initialized the database')

@cli.command()
def dropdb():
    click.echo('Dropped the database')

def main():
    cli()


if __name__ == "__main__":
    main()
$ python3 cli.py 
Usage: cli.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  dropdb
  initdb
$ python3 cli.py dropdb
Dropped the database
$ python3 cli.py dropdb --help
Usage: cli.py dropdb [OPTIONS]

Options:
  --help  Show this message and exit.
$ python3 cli.py initdb --help
Usage: cli.py initdb [OPTIONS]

Options:
  --help  Show this message and exit.
$ python3 cli.py initdb
Initialized the database

Comment créer des sous-sous-commandes

Ce qui précède est comment le faire lorsque commande de programme <options> '' Récemment, le nombre de kubectl etc. qui reçoivent deux sous-commandes telles que kubectl get pods '' est en augmentation. Par conséquent, que dois-je faire si je le fais moi-même?

Même si je lis le document de clic, il indique comment créer des sous-commandes, mais pas comment créer des sous-sous-commandes. J'ai cherché dans certains documents et sur le Web et j'ai pensé que la méthode suivante était belle, alors je l'ai faite.

.
├── modules
│   ├── sub1.py
│   └── sub2.py
└── cli.py
import click
from modules import sub1
from modules import sub2

@click.group()
def cli():
    pass

def main():
    cli.add_command(sub1.sub1cli)
    cli.add_command(sub2.sub2cli)
    cli()


if __name__ == "__main__":
    main()
import click

@click.group()
def sub1cli():
    pass

@sub1cli.command()
def sub1cmd1():
    click.echo('sub1cmd1')

@sub1cli.command()
def sub1cmd2():
    click.echo('sub1cmd2')
import click

@click.group()
def sub2cli():
    pass

@sub2cli.command()
def sub2cmd1():
    click.echo('sub2cmd1')

@sub2cli.command()
def sub2cmd2():
    click.echo('sub2cmd2')

De cette façon, vous pouvez le créer en ajoutant click.group avec la commande add_command de click.

$ python3 cli.py 
Usage: cli.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  sub1cli
  sub2cli
$ python3 cli.py sub1cli
Usage: cli.py sub1cli [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  sub1cmd1
  sub1cmd2

$ python3 cli.py sub2cli
Usage: cli.py sub2cli [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  sub2cmd1
  sub2cmd2

Recommended Posts

Créez une sous-sous-commande à l'aide de la commande click --netsted sub-sub -
Essayez de créer une nouvelle commande sous Linux
Créez une commande pour obtenir le journal de travail
Commande pour créer Linux Live USB
Étapes pour créer un projet Django
Comment créer un package Conda
Comment utiliser MBDyn (paramètre de commande)
Comment créer un pont virtuel
Comment créer un Dockerfile (basique)
5 façons de créer un chatbot Python
Comment créer un fichier de configuration
Créez un outil de ligne de commande pour convertir des dollars en yens en utilisant Python
J'ai essayé de créer un linebot (implémentation)
Comment créer un clone depuis Github
Créer un bot pour retweeter les informations sur le virus corona
Faciliter l'utilisation de la fonction clic de SikuliX
Comment créer un dossier git clone
J'ai essayé de créer un linebot (préparation)
[python] Comment utiliser __command__, explication des fonctions
[Linux] Comment utiliser la commande echo
Comment calculer Utiliser% de la commande df
Créez une commande pour supprimer tous les fichiers temporaires générés dans un dossier spécifique
Différentes façons de créer un dictionnaire (mémoires)
Comment utiliser la commande CUT (avec exemple)
Comment créer un référentiel à partir d'un média
N'utilisez pas la commande rm pour supprimer des fichiers
Script pour créer un fichier de dictionnaire Mac
3 meilleures façons d'utiliser la commande less
Utilisez la commande [shell] pour compresser par zip n'importe quel fichier pour créer un fichier et supprimer le fichier d'origine.
[Python] Compréhension de liste Différentes façons de créer une liste
[Python] Comment tester l'analyseur de ligne de commande cliquez sur
Ajouter une commande pour marquer ensemble des fichiers similaires
Je souhaite créer facilement un modèle de bruit
Comment créer un objet fonction à partir d'une chaîne
Je veux créer une fenêtre avec Python
Créer un ensemble de données en échantillonnant au hasard les données MNIST
Comment créer un fichier JSON en Python
Si vous souhaitez créer Word Cloud.
Étapes pour créer un bot Twitter avec Python
Je souhaite créer un type d'implémentation pouvant être branché
[Note] Comment créer un environnement de développement Ruby
Comment créer une boîte de saisie Kivy 1 ligne
Procédure de création d'application multi-plateforme avec kivy
Comment créer une API Rest dans Django
Facile à créer une application console Python avec Click
Un graphique sympa pour l'analyse des données de Wiire!
[Note] Comment créer un environnement de développement Mac
Lorsque vous connectez SSD à Linux et créez un serveur de fichiers, il est préférable d'utiliser NTFS.
Utilisez l'API Twitter pour réduire le temps nécessaire à Twitter (créer une chronologie de mise en évidence (comme))
Comment utiliser NUITKA-Utilities hinted-compilation pour créer facilement un fichier exécutable à partir d'un script Python
Lire la source Python-Markdown: Comment créer un analyseur
Comment créer un article à partir de la ligne de commande
[Pour les débutants] Comment utiliser la commande say avec python!
Créer une fonction pour visualiser / évaluer le résultat du clustering