Heim  >  Artikel  >  Backend-Entwicklung  >  So erhalten Sie Befehlszeilenparameter in Python

So erhalten Sie Befehlszeilenparameter in Python

迷茫
迷茫Original
2017-03-25 17:11:531257Durchsuche

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 diejenigen 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:

So erhalten Sie Befehlszeilenparameter in Python

2. argparse-Modul

Ein Standardmodul zum Parsen von Befehlszeilenoptionen und -parametern.

Verwendungsschritte:

1: argparse importieren #Modul importieren

2: parser = argparse.ArgumentParser() #Analyseobjekt erstellen

3: Parser .add_argument() #Fügen Sie die zum Objekt verwendeten Befehlszeilenoptionen und -parameter hinzu

4: parser.parser_args() #Parsen Sie die Befehlszeile

Als Nächstes werden die Methoden ArgumentParser und add_argument vorgestellt im Detail:

ArgumentParser(prog=None, using=None, description=None, epilog=None, parent=[], formatter_class=argparser.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default= Keine, context_handler='error', add_help=True)

Beim Ausführen des Programms aufgrund falscher Parameter oder beim Aufruf der Methode parser.print_help() werden diese Beschreibungsinformationen gedruckt . 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. Das Gegenteil von store_false

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

dest: 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 Code des Beispielskripts test_argparse.py lautet wie folgt:

#encoding=utf-8
import argparse

def main(args):
    print("--address {0}".format(args.code_address))    #args.address会报错,因为指定了dest的值
    print("--flag {0}".format(args.flag))   #如果命令行中该参数输入的值不在choices列表中,则报错
    print("--port {0}".format(args.port))   #prot的类型为int类型,如果命令行中没有输入该选项则报错
    print("-l {0}".format(args.log))  #如果命令行中输入该参数,则该值为True。因为为短格式"-l"指定了别名"--log",所以程序中用args.log来访问

if __name__ == '__main__':
    parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.")
    parser.add_argument("--address", default=80, help="the port number.", dest="code_address")
    parser.add_argument("--flag", choices=['.txt', '.jpg', '.xml', '.png'], default=".txt", help="the file type")
    parser.add_argument("--port", type=int, required=True, help="the port number.")
    parser.add_argument("-l", "--log", default=False, action="store_true", help="active log info.")

    args = parser.parse_args()
    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

Das obige ist der detaillierte Inhalt vonSo erhalten Sie Befehlszeilenparameter in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn