Sys.Argv w Python

Sys.Argv w Python
Moduł SYS składa się z funkcji i zmiennych, które silnie oddziałują z tłumaczem. Moduł SYS jest wstępnie załadowany w Python i nie wymaga żadnej instalacji. Wśród wielu funkcji i zmiennych są sys.argv (). Sys.argv () służy do gromadzenia wejścia użytkownika wiersza poleceń. W tym samouczku będziemy się uczyć o Sys.argv () i jego wspólne zastosowania.

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?
Witaj świecie

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 Sys
Drukuj (sys.Argv)

Gdybyśmy wykonali skrypt, otrzymalibyśmy następujące czynności:

$ Python3 Main.py
['główny.py ']

Jak 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 Sys
Drukuj (sys.Argv)

Gdybyśmy wykonali skrypt, otrzymalibyśmy następujące czynności:

$ Python3 Main.PY Hello World
['główny.PY, „Hello,„ World ”]

Teraz 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 Sys
name_of_script = sys.argv [0]
print (name_of_script)

Podczas wykonywania skryptu wpiszmy następujące:

$ Python3 Main.py
główny.py

Sys.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 Sys
name1 = Sys.Argv [1]
name2 = sys.Argv [2]
name3 = sys.Argv [3]
print („hello”, name1, ',', name2, 'and', name3)

Podczas wykonywania skryptu wpisalibyśmy na przykład następujące:

$ Python3 Main.Py Trevor Travis Tim
Witam Trevor, Travis i Tim

Tutaj, 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 Sys
List = Sys.Argv [1:]
Dla wartości na liście:
Drukuj (wartość)

Podczas wykonywania skryptu wpisalibyśmy na przykład następujące:

$ Python3 Main.PY Hello Trevor Travis i Tim
Witam
Trevor
Travis
I
Tim

Tutaj, 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 Sys
num1 = sys.Argv [1]
num2 = sys.Argv [2]
num3 = sys.Argv [3]
LIST = [NUM1, NUM2, NUM3]
Total = suma (lista)
Drukuj (ogółem)

Gdybyśmy wykonali skrypt, otrzymalibyśmy następujące czynności:

$ Python3 Main2.PY 3 4 5
TypeError: Nieobsługiwane typ (y) dla +: „int” i „str”

To, 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 Sys
num1 = int (sys.Argv [1])
num2 = int (sys.Argv [2])
num3 = int (sys.Argv [3])
LIST = [NUM1, NUM2, NUM3]
Total = suma (lista)
Drukuj (ogółem)

Gdybyśmy wykonali skrypt, otrzymalibyśmy następujące czynności:

$ Python3 Main2.PY 3 4 5
12

Dodaliś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 Sys
Jeśli Len (sys.Argv) 4:
wydrukuj („Wprowadź trzy nazwy”)
Jeśli Len (sys.ARV) == 4:
name1 = Sys.Argv [1]
name2 = sys.Argv [2]
Ame3 = Sys.Argv [3]
Drukuj („Hello”, Name1)
Drukuj („Hello”, Name2)
Drukuj („Hello”, Name3)

Podczas wykonywania skryptu wpisalibyśmy na przykład następujące:

$ Python3 Main.Py Travis Trevor Tim
Witaj Travis
Witaj Trevor
Witaj Tim

Aby 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ń!