sys.argv
Im Wesentlichen Sys.argv () ist eine Liste aller Befehlszeileneingänge. Wenn das Skript ausgeführt wird, können Sie seine Benutzereingabe auf verschiedene Weise füttern, und eine solche Möglichkeit ist über die Befehlszeile. Nehmen wir in diesem ersten Fall an, dass wir ein einfaches Skript namens Main haben.py.
Druck („Hallo Welt“)Während der Ausführung des Skripts werden wir zusätzlich zum Skriptnamen einige Befehlszeilenargumente hinzufügen. Wenn wir das Skript ausführen würden, würden wir Folgendes bekommen:
$ python3 main.py, was hast du vor??Sie bemerken hier, dass die Befehlszeilenargumente das Skript selbst nicht beeinträchtigt haben.
Lassen Sie uns nun das Skript ein wenig ändern. Nehmen wir also an, dass wir jetzt ein Skript namens Main haben.PY mit dem folgenden Inhalt:
ImportsystemWenn wir das Skript ausführen würden, würden wir Folgendes bekommen:
$ python3 main.pyWie Sie sehen können, erhalten wir eine Liste mit einem Element darin, da wir sie nur mit einem Element geliefert haben, dem Skriptnamen. Nehmen wir nun an, dass wir ihm eine etwas andere Befehlszeileneingabeargumente liefern.
ImportsystemWenn wir das Skript ausführen würden, würden wir Folgendes bekommen:
$ python3 main.Py Hello WorldNun, was passiert, ist, dass es alles abruft, was wir über die Befehlszeile oder alle vom Benutzer bereitgestellten Befehlszeilenargumente bereitgestellt haben. In meinem Fall fügte ich "Hallo Welt" nach dem Namen des Skripts hinzu, und als solche wurde es auf die Liste abgerufen.
sys.argv [0]
Sys.Argv [0] ist das erste Argument in der Liste. In allen Fällen ist das erste Argument immer der Name des Skripts.
ImportsystemBei der Ausführung des Skripts geben wir Folgendes ein:
$ python3 main.pysys.argv [n]
Alternativ möchten Sie möglicherweise ein spezifisches Befehlszeilenargument abrufen. Zum Beispiel möchten Sie beim Schreiben eines Python -Programms möglicherweise die Eingabe des Benutzers über Befehlszeilenargumente abrufen. In diesem Szenario werden wir die ersten drei Befehlszeilenargumente abrufen.
ImportsystemBei der Ausführung des Skripts geben wir zum Beispiel Folgendes ein:
$ python3 main.Py Trevor Travis TimHier, sys.Argv [1] ist das zweite Befehlszeilenargument, während Sys.Argv [2] ist das dritte Kommandozeilenargument und das System.Argv [3] ist das vierte Kommandozeilenargument. Dies liegt so, weil der Index bei 0 und sys beginnt.Argv [0] ist der Name des Skripts.
Was wäre, wenn von dem Benutzer von der Anzahl der Eingänge erwartet wird, dass wir nicht wussten, wie viele Eingaben es gab? Angenommen, das folgende Skript wurde geschrieben:
ImportsystemBei der Ausführung des Skripts geben wir zum Beispiel Folgendes ein:
$ python3 main.Py Hallo Trevor Travis und TimHier, sys.Argv [1:] bedeutet, dass alle Werte aus SYS.Argv [1] werden bis zum Ende der Liste verwendet. In diesem Fall können wir so viele Befehlszeilenargumente hinzufügen, wie wir es wollen.
Saiten
Bitte beachten Sie, dass alle von dem variablen System erfassten Werte.Argv sind Saiten. Nehmen wir also an, dass wir drei Zahlen hinzufügen wollten, die der Benutzer eingibt.
ImportsystemWenn wir das Skript ausführen würden, würden wir Folgendes bekommen:
$ python3 main2.PY 3 4 5Was wir bekommen, ist ein Typeerror. Dies liegt darauf. Um dies zu korrigieren, müssten wir die Saiten in Ganzzahlen umwandeln:
ImportsystemWenn wir das Skript ausführen würden, würden wir Folgendes bekommen:
$ python3 main2.PY 3 4 5Wir haben Int hinzugefügt (SYS.arg [n]) stellte sicher, dass wir die Zeichenfolge in eine Ganzzahl umgewandelt haben.
Sys.ARGV -Fehler
Einer der häufigsten Fehler, die geworfen werden (wenn wir kein System verwenden.ARGV [1:], aber eher den n -ten Wert anhand von SYS angeben.Argv [n]) ist die eines IndexErrors (Listenindex außerhalb des Bereichs). Dieser Fehler bedeutet, dass die Befehlszeilenargumente nicht angegeben wurden, und um diesen Fehler abzuwenden, müssen wir einige Vorsichtsmaßnahmen ergreifen:
ImportsystemBei der Ausführung des Skripts geben wir zum Beispiel Folgendes ein:
$ python3 main.Py Travis Trevor TimUm den Fehler abzuwenden, müssen wir die Länge der Befehlszeilenargumente anpassen. Im vorherigen Beispiel haben wir drei Namen und einen Skriptnamen, was bedeutet, dass insgesamt 4 Werte vorhanden sind. Wir sagen daher, dass der Benutzer, wenn die Länge größer als 4 oder weniger als 4 ist, drei Namen eingibt. Drucken Sie sonst die drei Namen aus.
Das Systemmodul ist sehr wichtig, da es die Interaktion mit dem Python -Interpreter ermöglicht. Insbesondere das variable System.ARGV ist eine Liste, die alle Befehlszeilenargumente der Benutzer enthält. Sys.Argv [0] definiert den Namen des Skripts in allen Fällen. Obwohl sys.Argv () wird sehr häufig verwendet, um die Argumente der Befehlszeilen zu sammeln. Eine weitere noch bessere Möglichkeit, Befehlszeilenargumente zu sammeln, besteht darin, ArgParse zu verwenden. Aber das ist eine Geschichte für einen anderen Tag!