Wenn Sie beim Ausführen eines Python-Programms mit CLI ein Argument angeben möchten, wird getopt verwendet. Ich habe verschiedene Grundbewegungen ausprobiert.
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.
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
$
Es war sehr praktisch, es als Set mit getops und sys.argv zur Verfügung zu stellen.
Recommended Posts