Python-Memo - Geben Sie die Optionen mit getopt an

Einführung

Wenn Sie beim Ausführen eines Python-Programms mit CLI ein Argument angeben möchten, wird getopt verwendet. Ich habe verschiedene Grundbewegungen ausprobiert.

Grundlegende Verwendung

Referenz-URL: https://szarny.hatenablog.com/entry/2017/08/17/231356

Format


import getopt
opts,args = getopt.getopt(text, shortopts, longopts=[])

Beispiel


import getopt
opts,args = getopt.getopt(
    sys.args[1:],
    "hle:t:cp:,
    ["help", "listen", "execute=","target=","command","port=" )
Streit Erläuterung
opts Das Ziel, für das das Argument analysiert wurde. Shortopts,Ziele, die mit Longopts übereinstimmen, werden im Listenformat festgelegt
args Das Ziel, für das das Argument analysiert wurde. Shortopts,Ziele, die nicht mit Longopts übereinstimmen, werden im Listenformat festgelegt
text Das Ziel, für das das Argument analysiert wird. Sys, wenn das Argument an der Eingabeaufforderung angegeben wird.args[1:]OK
shortopts Optionsspezifikation in Abkürzung. Fügen Sie Optionen, für die ein Argument erforderlich ist, einen Doppelpunkt hinzu. Zum Beispiel h,l,c erfordert kein Argument und e,t,p ist eine Option, für die ein Argument erforderlich ist
longopts Optionsspezifikation im Detail. Geben Sie im Listenformat an. Optionen, die ein Argument erfordern, sind gleich(=)Anfügen. Zum Beispiel ausführen, target,Port erfordert ein Argument

Außerdem entsprechen Shortopts und Longopts einander, daher sollten Sie vorsichtig sein.

Implementierungsbeispiel

Ich habe verschiedene Dinge ausprobiert, also wird etwas zusätzlicher Code eingemischt ...

show_arg.py


import sys
import getopt

def main():
    if not len(sys.argv[1:]):
        print("argument is nothing")
        sys.exit()
    
    text = sys.argv[1:]
        
    try:
        opts,args = getopt.getopt(
            text,
            "t:p:m:h",
            ["target=", "port=", "message=", "hogehoge"]
            )
        print("Options:", opts)
        print("Arguments:", args)
    except getopt.GetoptError as err:
        print(str(err))

main()
print("finished")

Klicken Sie hier für das Ausführungsergebnis. Wenn Sie die Abkürzung angeben, ein Bindestrich. Zwei Bindestriche, falls im Detail angegeben. Das erste Mal habe ich Shortopts und Longopts ausprobiert (ein Muster, das nicht in Argumente zu passen scheint) Beim zweiten Mal habe ich versucht, das Argument so einzustellen, dass der Wert in args eingegeben wird

Ausführungsergebnis


$ python show_arg.py -t 127.0.0.1 -p 8888 --message hello --hogehoge
('Options:', [('-t', '127.0.0.1'), ('-p', '8888'), ('--message', 'hello'), ('--hogehoge', '')])
('Arguments:', [])
finished
$ python show_arg.py -t 127.0.0.1 -p 8888 --message hello --hogehoge hoge hage hige
('Options:', [('-t', '127.0.0.1'), ('-p', '8888'), ('--message', 'hello'), ('--hogehoge', '')])
('Arguments:', ['hoge', 'hage', 'hige'])
finished
$ 

abschließend

Es war sehr praktisch, es als Set mit getops und sys.argv zur Verfügung zu stellen.

Recommended Posts

Python-Memo - Geben Sie die Optionen mit getopt an
Geben Sie Optionen an, wenn Sie Python ausführen
Geben Sie die Python-Version mit virtualenv an
Python-Memo
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
Legen Sie die Python-Kompilierungsoptionen mit pyenv fest
Python-Memo
Python-Memo
Python-Memo
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Python-Memo
[Memo] Tweet auf Twitter mit Python
Konvertieren Sie Memos sofort mit Python 2to3
Geben Sie Optionen an, wenn Sie flake8 mit flycheck ausführen
Memo, um nach KPI mit Python zu fragen
"Systemhandel beginnt mit Python3" Lesememo
Ein Memo mit Python2.7 und Python3 in CentOS
FizzBuzz in Python3
Scraping mit Python
Python-Anfänger-Memo (9.2-10)
Statistik mit Python
Scraping mit Python
Python mit Go
Python-Anfänger-Memo (9.1)
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
★ Memo ★ Python Iroha
Python beginnt mit ()
mit Syntax (Python)
[Python] EDA-Memo
Python 3-Operator-Memo
Bingo mit Python
Zundokokiyoshi mit Python
[Mein Memo] Python
Python3-Metaklassen-Memo
[Python] Grundkarten-Memo
Python-Anfänger-Memo (2)
Excel mit Python
[Python] Numpy Memo
Mikrocomputer mit Python
Mit Python besetzen
[Persönliches Memo] julia - Verwenden Sie die Python-Bibliothek mit julia unter Verwendung von PyCall
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
So legen Sie Attribute mit Mock of Python fest
Ein Memo beim Erstellen einer Python-Umgebung mit Miniconda
Lesen und Schreiben passt Dateien mit Python (Memo)
Memo zum Bearbeiten von Szenen mit Blender Python (W.I.P.)
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Python-Klasse (Python-Lernnotiz ⑦)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03