[PYTHON] Erstellen Sie einen Sub-Sub-Befehl mit dem Klick --netsted-Sub-Sub-Befehl -

Überblick

Wenn Sie ein Befehlszeilen-Tool mit einem Befehlszeilen-Analyse-Tool in Python erstellen, werden die verwendeten Module grob in die folgenden drei unterteilt.

Da argparse eine Standardbibliothek ist, hat es den Vorteil, dass es ohne nachzudenken verwendet werden kann, und da click kein Standardmodul ist, ist es einfach, Dinge zu implementieren, die mit einer Standardbibliothek schwierig zu implementieren sind.

Da ich noch nie Feuer verwendet habe und in diesem Artikel keine Tools zur Befehlszeilenanalyse vorgestellt werden sollen, werde ich hier auf weitere Vergleiche und Erklärungen verzichten.

So erstellen Sie einen Unterbefehl mit click

Die Methode zum Erstellen eines Unterbefehls mit click lautet wie folgt.

Wenn Sie ein Programm erstellen möchten, das tatsächlich funktioniert, sieht es wie folgt aus.

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

So erstellen Sie Sub-Sub-Befehle

Das obige ist, wie es gemacht wird, wenn Programmbefehl <Optionen> In letzter Zeit nimmt die Anzahl der Kubectl und dergleichen, die zwei Unterbefehle wie "kubectl get pods " erhalten, zu. Was soll ich also tun, wenn ich es selbst mache?

Selbst wenn ich das Klickdokument lese, heißt es, wie ein Unterbefehl erstellt wird, nicht jedoch, wie ein Unterbefehl erstellt wird. Ich habe einige Dokumente und das Web durchsucht und fand die folgende Methode wunderschön, also habe ich sie gemacht.

.
├── 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')

Auf diese Weise können Sie es erstellen, indem Sie click.group mit dem Befehl add_command von click hinzufügen.

$ 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

Erstellen Sie einen Sub-Sub-Befehl mit dem Klick --netsted-Sub-Sub-Befehl -
Versuchen Sie, einen neuen Befehl unter Linux zu erstellen
Erstellen Sie einen Befehl, um das Arbeitsprotokoll abzurufen
Befehl zum Erstellen von Linux Live USB
Schritte zum Erstellen eines Django-Projekts
So erstellen Sie ein Conda-Paket
Verwendung von MBDyn (Befehlseinstellung)
So erstellen Sie eine virtuelle Brücke
Wie erstelle ich eine Docker-Datei?
5 Möglichkeiten zum Erstellen eines Python-Chatbots
So erstellen Sie eine Konfigurationsdatei
Erstellen Sie ein Befehlszeilenprogramm, um mit Python Dollar in Yen umzurechnen
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
So erstellen Sie einen Klon aus Github
Erstellen Sie einen Bot, um Corona-Virus-Informationen zu retweeten
Vereinfachen Sie die Verwendung der Klickfunktion von SikuliX
So erstellen Sie einen Git-Klonordner
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
[Python] Verwendung von __command__, Funktionserklärung
[Linux] Verwendung des Befehls echo
Berechnen Verwenden Sie% des Befehls df
Erstellen Sie einen Befehl zum Löschen aller temporären Dateien, die in einem bestimmten Ordner generiert wurden
Verschiedene Möglichkeiten, ein Wörterbuch zu erstellen (Erinnerungen)
Verwendung des CUT-Befehls (mit Beispiel)
So erstellen Sie ein Repository aus Medien
Verwenden Sie den Befehl rm nicht, um Dateien zu löschen
Skript zum Erstellen einer Mac-Wörterbuchdatei
3 beste Möglichkeiten, den Befehl less zu verwenden
Verwenden Sie den Befehl [shell], um eine beliebige Datei zu komprimieren, um eine Datei zu erstellen und die Originaldatei zu löschen.
[Python] Listenverständnis Verschiedene Möglichkeiten zum Erstellen einer Liste
[Python] So testen Sie den Befehlszeilen-Parser-Klick
Fügen Sie einen Befehl hinzu, um ähnliche Dateien zusammen zu markieren
Ich möchte einfach ein Rauschmodell erstellen
So erstellen Sie ein Funktionsobjekt aus einer Zeichenfolge
Ich möchte mit Python ein Fenster erstellen
Erstellen Sie einen Datensatz, indem Sie zufällig MNIST-Daten auswählen
So erstellen Sie eine JSON-Datei in Python
Wenn Sie Word Cloud erstellen möchten.
Schritte zum Erstellen eines Twitter-Bots mit Python
Ich möchte eine Art von Implementierung erstellen, die angeschlossen werden kann
[Hinweis] So erstellen Sie eine Ruby-Entwicklungsumgebung
So erstellen Sie ein 1-zeiliges Kivy-Eingabefeld
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
So erstellen Sie eine Rest-API in Django
Erstellen Sie einfach eine Python-Konsolenanwendung mit Click
Ein cooles Diagramm zur Datenanalyse von Wiire!
[Hinweis] So erstellen Sie eine Mac-Entwicklungsumgebung
Wenn Sie eine SSD mit Linux verbinden und einen Dateiserver erstellen, ist es besser, NTFS zu verwenden.
Verwenden Sie die Twitter-API, um die von Twitter benötigte Zeit zu verkürzen (erstellen Sie eine Hervorhebungszeitleiste).
Verwendung der NUITKA-Utilities-Hinweis-Kompilierung zum einfachen Erstellen einer ausführbaren Datei aus einem Python-Skript
Lesen Sie die Python-Markdown-Quelle: So erstellen Sie einen Parser
So erstellen Sie einen Artikel über die Befehlszeile
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
Erstellen Sie eine Funktion zur Visualisierung / Auswertung des Clustering-Ergebnisses