Geben Sie in Python einen Unterbefehl als Befehlszeilenargument an

Einführung

Ich schreibe oft Befehle, die in Python über die Befehlszeile funktionieren, aber manchmal möchte ich Unterbefehle wie "git" schreiben.

Für Git

$ git commit -m "test"

Dieses "Commit" ist ein Unterbefehl.

Erstellen Sie diesen Unterbefehl.

Implementierung

Wenn Sie Befehlsargumente in Python analysieren möchten, verwenden Sie das Modul ** argparse **.

15.4. argparse

  • Befehlszeilenoptionen, Argumente, Unterbefehlsparser - http://docs.python.jp/2.7/library/argparse.html?highlight=argparse#argparse

Normalerweise würden Sie die Klasse ** ArgumentParser ** aus dem argparse-Modul importieren. Definieren Sie dann den Parser und fügen Sie Optionen hinzu.

Normale Zeit :

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)

Sie müssen Parser verschachteln, um Unterbefehle zu erstellen. ** Sie können Unterbefehle festlegen, indem Sie einen anderen Parser im Parser installieren. ** ** **

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)

Erstellen Sie einen Wrapper für den Subparser mit der Methode parser.add_subparsers

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

Machen Sie einen Subparser aus einem Wrapper.

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

Geben Sie dem Subparser Argumente.

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

Im obigen Beispiel sieht die Hilfemeldung übrigens so aus.

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

Jetzt können Sie Unterbefehle erstellen.

Recommended Posts

Geben Sie in Python einen Unterbefehl als Befehlszeilenargument an
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
Befehlszeilenargumentverarbeitung (Python docopt)
Zerlegen Sie Befehlsargumente in einer Zeile in Python
Hinweise Ich habe nachgeschlagen, um Befehlszeilentools in Python zu erstellen
Vorlage zum Erstellen von Befehlszeilenanwendungen in Python
So empfangen Sie Befehlszeilenargumente in Python
Mach ein Janken-Spiel in einer Zeile (Python)
Erstellen Sie eine Befehlszeilen-App in Python, um die Aktionen setup.py, argparse und GitHub zu verstehen
Verwalten von Argumenten beim Implementieren eines Python-Skripts als Befehlszeilentool
[LINE Messaging API] Erstellen Sie mit Python ein umfangreiches Menü
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Ich habe einen Vim-ähnlichen Ersetzungsbefehl in Slackbot #Python implementiert
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Fizzbuzz in Python (in einer Zeile)
Führen Sie externe Befehle mit Python aus
Versuchen Sie LINE Notify mit Python
Erstellen Sie ein Lesezeichen in Python
Externe Befehlsausführung in Python
Zeichne ein Herz in Python
Zeigen Sie DICOM-Bilder mit rudimentärem Python als Mediziner an
Ermöglichen Sie die Installation von in Python erstellten Befehlszeilentools
Eine Geschichte darüber, wie man einen relativen Pfad in Python angibt.
Das Graustufenbild wird in OpenCV / Python als Farbbild angezeigt
So geben Sie Befehlszeilenargumente beim Debuggen mit PyCharm an
[Python] Verwalten Sie Funktionen, indem Sie sie in ein Wörterbuch einfügen (Befehlstabelle, Funktionstabelle, Funktionszeiger).
Wahrscheinlich in einer Nishiki-Schlange (Originaltitel: Vielleicht in Python)
Verwenden Sie Pymol als Python-Bibliothek
[Python] Rückruffunktion (Funktion als Argument übergeben)
[Python] Verwalten Sie Funktionen in einer Liste
Definition des Funktionsargumenttyps in Python
[Python] Erstellen Sie ein Programm, das Zeilenumbrüche in der Zwischenablage löscht. + Als Verknüpfung mit Fenstern registrieren
Python Hinweis: Stellen Sie fest, ob das Befehlszeilenargument in der Liste enthalten ist
Verwenden Sie Stoff wie in Python (Stoff3)
Erstellen Sie einen DI-Container mit Python
Führen Sie den Shell-Befehl / Python in R aus
Format, wenn eine lange Zeichenfolge als Python-Argument übergeben wird
Zeichnen Sie eine Streudiagrammmatrix mit Python
ABC166 in Python A ~ C Problem
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
Im Python-Befehl zeigt Python auf Python3.8
Erstellen Sie eine Binärdatei in Python
Untersuchen, was in Python als Markdown-Parser verwendet werden kann
Verwenden Sie Blender als Python-Modul
Löse ABC036 A ~ C mit Python
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Implementierung eines einfachen Algorithmus in Python 2
Löse ABC037 A ~ C mit Python
Starten Sie das Python-Skript im Dienst
Führen Sie einen einfachen Algorithmus in Python aus
Zeichnen Sie ein CNN-Diagramm in Python
Erstellen Sie eine zufällige Zeichenfolge in Python
Rufen Sie die Formel in der Excel-Datei als Zeichenfolge in Python ab
Ich habe Line Benachrichtigung in Python versucht
[Einführung] Fügen Sie Zeilenumbrüche in Python 3 ein
Implementiert in 1 Minute! LINE Benachrichtigen in Python