Python3 Kommandozeilenargumente

Python3 基础语法Python3-Grundsyntax

Python bietet dasgetoptsys-Modul, um Kommandozeilenargumente zu erhalten.

$ python test.py arg1 arg2 arg3

In Python können Sie auchsysvonsys.argvverwenden, um Kommandozeilenargumente zu erhalten:

  • sys.argvist die Liste der Kommandozeilenargumente.

  • len(sys.argv)Zählt die Anzahl der Kommandozeilenargumente.

Hinweis:sys.argv[0]stellt den Skriptnamen dar.

Beispiele

Der Code der Datei test.py lautet wie folgt:

Beispiele

#!/usr/bin/python3

import sys

print ('Anzahl der Argumente:', len(sys.argv), ' Argumente.')
print ('Argumentliste:', str(sys.argv))
print ('Skriptname:', str(sys.argv[0]))

Wenn Sie den obigen Code ausführen, ist die Ausgabe:

$ python3 test.py arg1 arg2 arg3
参数个数为: 4 个参数。
参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
脚本名: test.py

getopt-Modul

Das getopt-Modul ist ein speziell für die Verarbeitung von Kommandozeilenargumenten entwickeltes Modul, das verwendet wird, um Kommandozeilenoptionen und -argumente zu erhalten, das heißt,sys.argv. Kommandozeilenoptionen machen Programmargumente flexibler. Es unterstützt den Kurzoptionsmodus-und den Langoptionsmodus--。

Das Modul bietet zwei Methoden und einen Ausnahmehandler, um Kommandozeilenargumente zu parsen.

getopt.getopt-Methode

Die getopt.getopt-Methode wird verwendet, um eine Kommandozeilenargumentliste zu parsen. Das Syntaxformat ist wie folgt:

getopt.getopt(args, options[, long_options])

Beschreibung der Methodenparameter:

  • args: Die Liste der zu analysierenden Befehlszeilenargumente.

  • options: Definiert im String-Format. Der Doppelpunkt nachoptionscolon after:gibt an, dass die Option ein zusätzliches Argument haben muss; kein Doppelpunkt bedeutet, dass die Option kein Argument entgegennimmt.

  • long_options: Definiert im Listenformat. Das Gleichheitszeichen nachlong_optionsequal sign after=gibt an, dass, wenn die Option gesetzt ist, sie ein zusätzliches Argument haben muss; andernfalls wird kein Argument angehängt.

Der Rückgabewert dieser Methode besteht aus zwei Elementen: Das erste ist(option, value)eine Liste von Tupeln. Das zweite ist eine Liste von Argumenten, die jene ohne-oder--Optionen enthält.

Als Nächstes definieren wir eine site()-Funktion und geben dann den Site-Namennameund die URL über die Kommandozeile ein,urlAbkürzungen können verwendet werdennundu:

Beispiele

import sys
import getopt
 
 
def site():
    name = None
    url = None
 
    argv = sys.argv[1:]
 
    try:
        opts, args = getopt.getopt(argv, "n:u:")  # Kurzoptionsmodus
     
    except:
        print("Error")
 
    for opt, arg in opts:
        if opt in ['-n']:
            name = arg
        elif opt in ['-u']:
            url = arg
     
 
    print( name +" " + url)
 
site()

Um den obigen Code zu testen, geben Sie Folgendes in der Befehlszeile ein:

python3 test.py -n EXAMPLE -u www.example.com

Die Ausgabe ist:

EXAMPLE www.example.com

Das folgende Beispiel demonstriert die Verwendung des Langoptionsmodus:

Beispiele

import sys
import getopt
 
def site():
    name = None
    url = None
 
    argv = sys.argv[1:]
 
    try:
        opts, args = getopt.getopt(argv, "n:u:",  
                                   ["name=",
                                    "url="])  # Langoptionsmodus
     
    except:
        print("Error")
 
    for opt, arg in opts:
        if opt in ['-n', '--name']:
            name = arg
        elif opt in ['-u', '--url']:
            url = arg
     
 
    print( name + " " + url)
 
site()

Um den obigen Code zu testen, geben Sie Folgendes in der Befehlszeile ein:

python3 test.py -n EXAMPLE -u www.example.com

Die Ausgabe ist:

EXAMPLE www.example.com

Eine andere Methode ist getopt.gnu_getopt, die selten verwendet wird, daher gehen wir hier nicht weiter darauf ein.


Ausnahme getopt.GetoptError

Diese Ausnahme wird ausgelöst, wenn keine Argumentliste gefunden wird oder wenn das erforderliche Argument einer Option leer ist.

Das Argument der Ausnahme ist ein String, der den Grund für den Fehler angibt. Die Attributemsgundoptsind die Fehlerinformationen für die zugehörige Option.

Beispiele

Angenommen, wir erstellen ein solches Skript, das zwei Dateinamen über die Befehlszeile an die Skriptdatei übergeben kann, und wir verwenden außerdem eine weitere Option, um die Skriptverwendung anzuzeigen. Die Skriptverwendung ist wie folgt:

usage: test.py -i <inputfile> -o <outputfile>

Der Code der Datei test.py lautet wie folgt:

Beispiele

#!/usr/bin/python3

import sys, getopt

def main(argv):
   inputfile = ''
   outputfile = ''
   try:
      opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
   except getopt.GetoptError:
      print ('test.py -i <inputfile> -o <outputfile>')
      sys.exit(2)
   for opt, arg in opts:
      if opt == '-h':
         print ('test.py -i <inputfile> -o <outputfile>')
         sys.exit()
      elif opt in ("-i", "--ifile"):
         inputfile = arg
      elif opt in ("-o", "--ofile"):
         outputfile = arg
   print ('Die Eingabedatei ist:', inputfile)
   print ('Die Ausgabedatei ist:', outputfile)

if __name__ == "__main__":
   main(sys.argv[1:])

Wenn Sie den obigen Code ausführen, ist die Ausgabe:

$ python3 test.py -h
usage: test.py -i <inputfile> -o <outputfile>

$ python3 test.py -i inputfile -o outputfile
输入的文件为: inputfile
输出的文件为: outputfile

Python3 基础语法Python3-Grundsyntax

Andere Erweiterungen