Sys.Argv
Zasadniczo Sys.argv () to lista wszystkich wejść wiersza poleceń. Po wykonywaniu skryptu możesz zasilić jego wejście użytkownika na różne sposoby, a jednym z takich sposobów jest wiersz poleceń. W tym pierwszym przypadku załóżmy, że mamy prosty skrypt o nazwie Main.py.
Drukuj („Hello World”)Podczas wykonywania skryptu dodamy kilka argumentów wiersza poleceń oprócz nazwy skryptu. Gdybyśmy wykonali skrypt, otrzymalibyśmy następujące czynności:
$ Python3 Main.py, co robisz?Zauważasz tutaj, że argumenty wiersza poleceń nie zakłóciły się do samego skryptu.
Więc teraz zmodyfikujmy skrypt. Załóżmy więc, że teraz mamy skrypt o nazwie Main.PY z następującą treścią:
Import SysGdybyśmy wykonali skrypt, otrzymalibyśmy następujące czynności:
$ Python3 Main.pyJak widać, otrzymujemy listę z jednym elementem, ponieważ dostarczyliśmy ją tylko z jednym elementem, nazwa skryptu. Załóżmy teraz, że dostarczamy mu nieco inne argumenty wejściowe wiersza poleceń.
Import SysGdybyśmy wykonali skrypt, otrzymalibyśmy następujące czynności:
$ Python3 Main.PY Hello WorldTeraz się dzieje, że odzyskuje wszystko, co dostarczyliśmy za pomocą wiersza poleceń lub wszystkich argumentów wiersza poleceń dostarczonych przez użytkownika. W moim przypadku dodałem „Hello World” po nazwie scenariusza i jako taki odzyskał go na liście.
Sys.argv [0]
Sys.Argv [0] jest pierwszym argumentem na liście. We wszystkich przypadkach pierwszym argumentem jest zawsze nazwa skryptu.
Import SysPodczas wykonywania skryptu wpiszmy następujące:
$ Python3 Main.pySys.argv [n]
Alternatywnie możesz chcieć odzyskać określony argument wiersza poleceń. Na przykład możesz pobrać dane wejściowe użytkownika za pomocą argumentów wiersza poleceń podczas pisania programu Python. W tym scenariuszu odzyskamy trzy pierwsze argumenty wiersza poleceń.
Import SysPodczas wykonywania skryptu wpisalibyśmy na przykład następujące:
$ Python3 Main.Py Trevor Travis TimTutaj, Sys.argv [1] jest drugim argumentem wiersza poleceń, podczas gdy sys.argv [2] jest trzecim argumentem wiersza poleceń i sys.Argv [3] to czwarty argument wiersza poleceń. Dzieje się tak, ponieważ chociaż indeks zaczyna się od 0 i sys.argv [0] to nazwa skryptu.
A co jeśli użytkownik miał wprowadzić N liczbę danych wejściowych i nie wiedzieliśmy, ile było danych wejściowych? Załóżmy, że napisano następujący skrypt:
Import SysPodczas wykonywania skryptu wpisalibyśmy na przykład następujące:
$ Python3 Main.PY Hello Trevor Travis i TimTutaj, Sys.argv [1:] oznacza, że wszystkie wartości z SYS.argv [1] są używane do końca listy. W takim przypadku możemy dodać tyle argumentów wiersza poleceń, ile chcemy.
Smyczki
Należy pamiętać, że wszystkie wartości przechwycone przez SYS zmienne.Argv to ciągi. Załóżmy, że chcieliśmy dodać trzy liczby, które wprowadza użytkownika.
Import SysGdybyśmy wykonali skrypt, otrzymalibyśmy następujące czynności:
$ Python3 Main2.PY 3 4 5To, co otrzymujemy, to typeerror. Wynika to z faktu, że wszystkie wartości uzyskane z listy są wartościami „ciągami”, podczas gdy potrzebujemy wartości całkowitych do dodania. Aby to naprawić, musielibyśmy przekształcić struny na liczby całkowite:
Import SysGdybyśmy wykonali skrypt, otrzymalibyśmy następujące czynności:
$ Python3 Main2.PY 3 4 5Dodaliśmy int (sys.arg [n]) zapewnił, że przekonwertujemy ciąg na liczbę całkowitą.
Sys.Błędy argv
Jeden z najczęstszych błędów, które są rzucane (gdy nie używamy SYS.argv [1:], ale raczej określ wartość n -th za pomocą SYS.argv [n]) jest indekserSerror (indeks listy poza zakresem). Ten błąd oznacza, że argumenty wiersza poleceń nie zostały określone, a aby zapobiec temu błędowi, musimy podjąć kilka kroków ostrożności:
Import SysPodczas wykonywania skryptu wpisalibyśmy na przykład następujące:
$ Python3 Main.Py Travis Trevor TimAby zapobiec błędu, musimy dostosować długość argumentów wiersza poleceń. W poprzednim przykładzie mamy trzy nazwy i nazwę skryptu, co oznacza, że istnieje w sumie 4 wartości. Tak więc mówimy, że jeśli długość jest większa niż 4 lub mniej niż 4, poproś użytkownika o wprowadzenie trzech nazw; W przeciwnym razie wydrukuj trzy nazwy.
Moduł SYS jest bardzo ważny, ponieważ umożliwia interakcję z tłumaczem Python. W szczególności zmienne sys.Argv to lista zawierająca wszystkie wprowadzone argumenty wiersza poleceń użytkowników. Sys.Argv [0] określa nazwę skryptu we wszystkich przypadkach. Chociaż Sys.argv () jest bardzo powszechnie wykorzystywany do gromadzenia argumentów wiersza poleceń, kolejnym jeszcze lepszym sposobem gromadzenia argumentów wiersza poleceń jest użycie ArgParse. Ale to historia na kolejny dzień!