Python3 Kommandozeilenargumente
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
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 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 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
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 输出的文件为: outputfileAndere Erweiterungen
Python3-Grundsyntax