Einführung in die Python-Methode zum Abrufen von Befehlszeilenparametern: getopt-Modul und argparse-Modul.
Python-Version: 2.7
1. getopt-Modul
verwendet hauptsächlich die Funktionen im Modul:
options, args = getopt.getopt(args, shortopts, longopts=[])
Parameter args: normalerweise sys.argv[1:]. Filtern Sie sys.argv[0] heraus. Dabei handelt es sich um den Namen des ausgeführten Skripts, der nicht als Befehlszeilenparameter gezählt wird.
Parameter shortopts: Analysezeichenfolge im Kurzformat. Beispiel: „hp:i:“, nach h steht kein Doppelpunkt, was bedeutet, dass es keine Parameter gibt; nach p und i stehen Doppelpunkte, was bedeutet, dass es Parameter gibt.
Parameter longopts: Analyse-String-Liste im Langformat. Beispiel: ["help", "ip=", "port="], nach help gibt es kein Gleichheitszeichen, was bedeutet, dass es keine Parameter gibt; nach ip und port steht ein Doppelpunkt, was bedeutet, dass es Parameter gibt.
Die Rückgabewertoptionen sind eine Liste mit Tupeln als Elementen. Die Form jedes Tupels ist: (Optionszeichenfolge, zusätzliche Parameter), wie zum Beispiel: ('-i', '192.168.0.1')
Der Rückgabewert args ist eine Liste, deren Elemente die Parameter sind, die weder „-“ noch „--“ enthalten.
Führen Sie den folgenden Befehl in der Befehlszeile aus:
python test_getopt.py -i 192.168.0.1 -p 80 123 a
oder
python test_getopt.py -ip=192.168.0.1 --port=80 123 a
test_getopt.py-Code lautet wie folgt:
#encoding=utf-8 import getopt import sys def main(argv): try: options, args = getopt.getopt(argv, "hp:i:", ["help", "ip=", "port="]) except getopt.GetoptError: sys.exit() for option, value in options: if option in ("-h", "--help"): print("help") if option in ("-i", "--ip"): print("ip is: {0}".format(value)) if option in ("-p", "--port"): print("port is: {0}".format(value)) print("error args: {0}".format(args)) if __name__ == '__main__': main(sys.argv[1:])
Die laufenden Ergebnisse sind wie folgt :
2. argparse-Modul
Ein Standardmodul zum Parsen von Befehlszeilenoptionen und -parametern.
Verwendungsschritte:
1: argparse importieren #Modul importieren
2: parser = argparse.ArgumentParser() #Parsing-Objekt erstellen
3: Parser .add_argument() #Fügen Sie die zum Objekt verwendeten Befehlszeilenoptionen und -parameter hinzu
4: parser.parser_args() #Parsen Sie die Befehlszeile
Nächste Details Wir stellen vor Methoden ArgumentParser und add_argument:
ArgumentParser(prog=None, using=None, description=None, epilog=None, parent=[], formatter_class=argparser.HelpFormatter, prefix_chars='-', fromfile_prefix_chars= None, argument_default=Keine,conflict_handler='error', add_help=True)
Die Parameter haben Standardwerte, wenn das Programm aufgrund falscher Parameter ausgeführt wird oder wenn die Methode parser.print_help() aufgerufen wird . Im Allgemeinen muss nur die Parameterbeschreibung übergeben werden.
add_argument(Name oder Flags... [, Aktion] [, Nargs] [, Konstante] [, Standard] [, Typ] [, Auswahlmöglichkeiten] [, erforderlich] [, Hilfe] [, Metavar] [, Ziel])
Die allgemeinen Parameter werden wie folgt erklärt:
Name oder Flags: Name oder Option des Befehlszeilenparameters, z. B. -p, --port
Aktion:
Store: Der Standardaktionsmodus, speichert den Wert in der angegebenen Variablen
Store_const: Der gespeicherte Wert wird im const-Teil des Parameters angegeben, der häufig zur Implementierung von nicht-booleschen Werten verwendet wird Befehlszeilenflags
store_true/store_false: Boolescher Schalter. Der Standardwert von store_true ist False. Wenn der boolesche Schalter in der Befehlszeile eingegeben wird, ist der Wert True. store_false ist das Gegenteil
Anhängen: Speichert den Wert in der Liste, dieser Parameter kann wiederverwendet werden
Append_const: Speichert den Wert in der Liste, der gespeicherte Wert wird im const-Teil von angegeben Parameter
Anzahl: Statistik Die Anzahl der Eingabeparameterabkürzungen
Version: Versionsinformationen ausgeben und dann das Skript beenden
nargs: Die Anzahl der Befehlszeilenparameter im Allgemeinen dargestellt durch Platzhalter: ? bedeutet, dass nur einer verwendet wird, * bedeutet 0 bis mehr, + bedeutet 1 bis mehr
Standard: Standardwert
Typ: Parametertyp, der Standardwert ist String-Typ, er kann auch Float sein, Typen wie int und boolean
Auswahlmöglichkeiten: Bereich der Eingabewerte
erforderlich: Standard ist False. Wenn True, bedeutet dies, dass der Parameter eingegeben werden muss
Hilfe : Hilfeaufforderung zur Verwendung von Information
Ziel: Der entsprechende Variablenname des Parameters im Programm, z. B.: add_argument("-a", dest="code_name"), verwenden Sie parser.code_name im Skript, um Greifen Sie auf den Wert der Befehlszeilenoption zu
Der Beispielskriptcode test_argparse.py lautet wie folgt:
1 #encoding=utf-8 2 import argparse 3 4 def main(args): 5 print("--address {0}".format(args.code_address)) #args.address会报错,因为指定了dest的值 6 print("--flag {0}".format(args.flag)) #如果命令行中该参数输入的值不在choices列表中,则报错 7 print("--port {0}".format(args.port)) #prot的类型为int类型,如果命令行中没有输入该选项则报错 8 print("-l {0}".format(args.log)) #如果命令行中输入该参数,则该值为True。因为为短格式"-l"指定了别名"--log",所以程序中用args.log来访问 9 10 if __name__ == '__main__':11 parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.")12 parser.add_argument("--address", default=80, help="the port number.", dest="code_address")13 parser.add_argument("--flag", choices=['.txt', '.jpg', '.xml', '.png'], default=".txt", help="the file type")14 parser.add_argument("--port", type=int, required=True, help="the port number.")15 parser.add_argument("-l", "--log", default=False, action="store_true", help="active log info.")16 17 args = parser.parse_args()18 main(args)
Führen Sie jeweils die folgenden Befehle aus:
python test_argparse.py
python test_argparse.py --port 80
python test_argparse.py - -port 80 --flag apk
python test_argparse.py --port 80 -l
Weitere Python-Methoden zum Abrufen von Befehlszeilenparametern und verwandte Artikel finden Sie auf der chinesischen PHP-Website!