Parsowanie argumentów wiersza poleceń było wcześniej zawarte w domyślnej bibliotece Python „ArgParse”. Umożliwiając w jakiś sposób przeanalizowanie wartości wejściowych użytkownika, a następnie użycia „argParse”. Oferuje elastyczność i ponownie wykorzystuje kod zamiast ręcznego ustawiania zmiennych w ramach kodu.
Przykład 1
Wdrożymy kolejne kod, aby pokazać strukturę i wykorzystanie biblioteki ArgParse.
importować ArgParse
Parser = argParse.ArgumentParser ()
Parser.add_argument ('-name', type = str, wymagane = true)
args = parser.parse_args ()
Drukuj („Cześć”, args.nazwa)
Biblioteka „ArgParse” byłaby importowana na początku kodu. Parser jest inicjowany przez ArgumentParser (), więc będziemy mogli rozpocząć dodawanie niestandardowych parametrów. Użyj parsera.funkcja add_argument (), aby dodać żądane argumenty. „Nazwa”, „Typ” i „Wymagane” zostaną podane jako argumenty tej metody. Atrybut „Wymagany” to logika wskazująca, czy wykonane jest następujące pole wiersza poleceń, a argument „Typ” pokazuje typ zmiennej określony jako wejście. Ustawiamy wartość argumentu „Typ” jako „Str” i „Wymagane” jako „prawdziwe”. Funkcja parse_args () zostanie wywołana. „Args.Atrybut nazwy ”wydaje się być nazwą takiego argumentu zidentyfikowanego z funkcją add_argument ().
Poprzedni kod daje ten typ wyników, jak pokazano:
Jak widzimy, spowoduje to błąd, ponieważ argument „nazwa” jest konieczny, ale brakuje mu. Kiedy dodamy -Name, otrzymujemy następujące dane wyjściowe:
Przykład 2
Są pewne sytuacje, w których nie chcemy się kłócić o nazwę, która może być używana do flagi. Można użyć parametru pozycyjnego, aby uniknąć konieczności dostarczenia flagi nazwy przed wprowadzeniem wartości rzeczywistej.
Tutaj pomnożymy argumenty pozycyjne, określając parametry.
importować ArgParse
Parser = argParse.ArgumentParser ()
Parser.add_argument ('-i', type = int, wymagane = true)
Parser.add_argument ('-j', type = int, wymagane = true)
args = parser.parse_args ()
produkt = args.I * args.J
Drukuj („Produkt:”, produkt)
Parser został po raz pierwszy wygenerowany po zaimportowaniu modułu „ArgParse”. Zmienne „I” i „J”, dwa argumenty typu liczb całkowitych, które muszą być prawdziwe, zostały następnie dodane. Następnie formuły produktu zostaną zastosowane po parsowaniu parametrów. Zastosujemy funkcję print () do wyświetlania produktu.
Przykład 3
W tym przypadku przeprowadzamy mnożenie bez określania parametrów pozycji.
importować ArgParse
Parser = argParse.ArgumentParser ()
Parser.add_argument („k”, type = int)
Parser.add_argument ('l', type = int)
args = parser.parse_args ()
produkt = args.k * args.L
Drukuj („Produkt:”, produkt)
Po pierwsze, integracja pakietu „ArgParse”, parser został początkowo skonstruowany za pomocą metody ArgumentParser (). „K” i „L” to dwa argumenty określone według typu liczb całkowitych. Chociaż argumenty pozycyjne utrzymują wyraźniejszy wiersz poleceń, nie podajemy tutaj atrybutu „wymaganego”. Następnie podane parametry zostały przeanalizowane za pomocą metody parse_args (). Zdefiniujemy funkcję produktu za pomocą zmiennych „K” i „L”. Aby pokazać wynik, skorzystamy z instrukcji drukowania.
Przykład 4
Opcjonalne argumenty mogą być pomocne, gdy tylko chcemy zapewnić użytkownikowi pewien wybór funkcjonalności. Po prostu określamy opcjonalny parametr za pomocą funkcji add_argument (), aby dodać opcjonalny argument.
importować ArgParse
Parser = argParse.ArgumentParser ()
Parser.add_argument ('-name', type = str, wymagane = true)
Parser.add_argument ('-class', type = int)
args = parser.parse_args ()
Jeśli args.Klasa:
Drukuj (args.nazwa, „in”, args.Klasa, klasa.')
w przeciwnym razie:
Drukuj („hej”, args.Nazwa + '!')
Rozpoczynamy program od włączenia biblioteki „ArgParse”. Najpierw ustanowiliśmy parser za pomocą metody argumentParser () do wykonywania dwóch argumentów parsera. Teraz wywołamy funkcję add_argument (), aby dodać różne parametry. Argumenty te obejmują dwie zmienne, nazwę i klasę, w których argument „nazwa” jest typu „ciąg” i musi to być prawda. Parametr „klasy” ma typ „liczby całkowitej”.
Ponadto, po parsowaniu parametrów, używamy warunku „IF-ELSE”. Wewnątrz to dwukrotnie stosowaliśmy funkcję print (), raz przez instrukcję „If” i ponownie przez instrukcję „else”, aby reprezentować dane wyjściowe. Argumenty w metodach print () różnią się w obu tych przypadkach. Argumenty podane w funkcji First Print () obejmują nazwę i klasę. Jednocześnie argumenty przedstawione w metodzie drugiej drukowanej () zawierają Args.nazwa.
Po uruchomieniu kodu otrzymujemy dwa wyjścia, jak podano poniżej. Otrzymujemy pierwsze wyjście po użyciu opcjonalnych argumentów i drugiego bez opcjonalnych argumentów.
Z poprzednich dwóch różnych wyjść możemy zauważyć, że istnieje różnica między obiema wyjściami z powodu użycia opcjonalnych argumentów w jednym, a nie w drugim.
Przykład 5
Wyobraźmy sobie, że zamiast prosić użytkownika o dostarczenie danych wejściowych „x” i „y”, chcemy, aby użytkownik wprowadził zakres liczb i skrypt, który następnie zwróciłby sumę wszystkich tych liczb. Ponieważ nie możemy przewidzieć, ile wartości wprowadzi użytkownik, nie jest konieczne zbudowanie nowego argumentu dla każdej nowej wartości. Liczba (lub wejścia) argument może być określony za pomocą opcji „Nargs” w funkcji add_argument ().
Zapewnimy wiele argumentów wejściowych i wydrukujemy w tym przypadku wynik.
importować ArgParse
Parser = argParse.ArgumentParser ()
Parser.add_argument ('-wartości', typ = int, nargs = 5)
args = parser.parse_args ()
sum = suma (args.wartości)
Drukuj („suma:”, suma)
Zainicjujemy, importując bibliotekę „ArgParse”, która jest wymagana do wykonywania poprzedniego kodu. Stworzymy parser, wywołując metodę ArgumentParser (). Ta funkcja nie zawiera argumentu. Następnie zostanie wywołana metoda add_argument (). Ta metoda ma trzy parametry. W przypadku wielu argumentów wejściowych zastosowaliśmy atrybut „nargs” w metodzie add_argument (). Teraz nazwiemy funkcję parse_args () do parsowania. Stosujemy metodę sum (), aby znaleźć sumę wartości. Aby przedstawić dane wyjściowe, wykorzystaliśmy instrukcję drukowania.
Przykład 6
Co jeśli chcemy suma większej liczby danych wejściowych niż pięć wartości? Możemy uczynić argument zaakceptowania dowolnej liczby wartości, ustawiając Nargs = "+".
importować ArgParse
Parser = argParse.ArgumentParser ()
Parser.add_argument ('-wartości', type = int, nargs = '+')
args = parser.parse_args ()
sum = suma (args.wartości)
Drukuj („suma:”, suma)
Możemy wykonać skrypt z niemal dowolną liczbą wartości wejściowych. Tutaj używamy tego samego kodu co wcześniej, ale w tym kodzie zmienimy „nargs” = 5 na „nargs” = '+'.
Wniosek
W tym artykule obejmowało różne techniki parsowania wiersza poleceń Python, takie jak proste argumenty, argumenty pozycyjne, opcjonalne argumenty i wiele argumentów wejściowych. Dostarczył również przykłady, aby zobaczyć, jak zmienia się wyjście w zależności od tego, czy argument jest używany, czy nie. Możemy wykorzystać przykłady do zbadania i zrozumienia, czy argument jest odpowiedni w pewnych okolicznościach.