Jak dodać argumenty wiersza poleceń do skryptu Pythona?

How Add Command Line Arguments Python Script



Jeśli opracowałeś skrypt lub aplikację w języku Python, która ma być uruchamiana głównie w emulatorach terminali lub nawet aplikacjach GUI, dodanie argumentów wiersza poleceń może poprawić jego użyteczność, czytelność kodu, strukturę aplikacji i ogólną przyjazność aplikacji dla użytkowników końcowych. Te argumenty wiersza poleceń są również nazywane opcjami lub przełącznikami i działają podobnie do argumentów, które zwykle widzisz w skryptach bash i innych programach opartych na C/C++.

Aby dodać argumenty do skryptów Pythona, będziesz musiał użyć wbudowanego modułu o nazwie argparse. Jak sama nazwa wskazuje, analizuje argumenty wiersza poleceń używane podczas uruchamiania skryptu lub aplikacji Pythona. Te przeanalizowane argumenty są również sprawdzane przez moduł argparse, aby upewnić się, że są właściwego typu. Błędy są zgłaszane, jeśli w argumentach znajdują się nieprawidłowe wartości.







Użycie modułu argparse można najlepiej zrozumieć na przykładach. Poniżej znajduje się kilka przykładów kodu, które pomogą Ci rozpocząć pracę z modułem argparse.



Przykład 1: Generuj argument i komunikat pomocy

Rozważ przykładowy kod poniżej:



importargparsować

parser =argparsować.Argument Parser(opis=„Program testowy”.)

argumenty= parser.parse_args()

Pierwsza instrukcja importuje moduł argparse. Następnie tworzona jest nowa instancja obiektu ArgumentParser i jako argument dostarczany jest krótki opis programu. Obiekt ArgumentParser jest potrzebny do konwersji wartości argumentów wiersza poleceń na typy danych rozumiane przez Pythona. Odbywa się to za pomocą metody parse_args obiektu ArgumentParser, jak pokazano w ostatniej instrukcji.





Zakładając, że zapisałeś powyższy przykład kodu w pliku o nazwie test.py, uruchomienie poniższych poleceń spowoduje wyświetlenie komunikatów pomocy związanych z programem.

$ ./test.py-h

$ ./test.py-Wsparcie

Powinieneś otrzymać dane wyjściowe podobne do tego:



użycie: test.py [-h]


Program testowy.


argumenty opcjonalne:

-h, --help pokaż tę wiadomość pomocy i wyjdź

Należy zauważyć, że do wspomnianego powyżej przykładu kodu nie dodano żadnej logiki obsługującej przeanalizowane argumenty i konwertującej je na obiekty. Dlatego komunikaty pomocy dla poszczególnych argumentów nie są wyświetlane w danych wyjściowych. Po dodaniu logiki do obsługi wartości przeanalizowanych argumentów w programie, komunikaty pomocy zaczną pokazywać opis poszczególnych argumentów.

Przykład 2: Obsługa argumentu ciągu

Aby dodać argumenty akceptowalne przez twój skrypt Pythona, musisz użyć metody add_argument. Spójrz na poniższy kod:

importargparsować

parser =argparsować.Argument Parser(opis=„Program testowy”.)

parser.dodaj_argument('ciąg_druku', Wsparcie='Wypisuje dostarczony argument.')

argumenty= parser.parse_args()

wydrukować(argumenty.print_string)

Dodano nową instrukcję pokazującą użycie metody add_argument. Każdy argument dodany podczas uruchamiania skryptu będzie traktowany przez ArgumentParser jako obiekt print_string.

Zauważ, że domyślnie metoda add_argument traktuje wartości pobrane z argumentów jako ciągi, więc nie musisz w tym przypadku jawnie określać typu. Dodanym argumentom przypisywana jest również domyślna wartość None, chyba że zostanie zastąpiona.

Jeszcze raz spójrz na komunikat pomocy:

użycie: test.py [-h] [ciąg_druku]


Program testowy.


argumenty pozycyjne:

print_string Wyświetla podany argument.


argumenty opcjonalne:

-h, --help pokaż tę wiadomość pomocy i wyjdź

Jeden z wierszy na wyjściu zawiera argumenty pozycyjne. Ponieważ żadne słowo kluczowe dla argumentu nie jest zdefiniowane, obecnie argument jest traktowany jako argument pozycyjny, w którym kolejność i pozycja podanego argumentu ma bezpośredni wpływ na program. Argumenty pozycyjne są również obowiązkowe, chyba że ręcznie zmienisz ich zachowanie.

Aby zdefiniować i przeanalizować opcjonalne argumenty, możesz użyć – (podwójny myślnik) i zmienić ich domyślne wartości za pomocą domyślnego argumentu.

importargparsować

parser =argparsować.Argument Parser(opis=„Program testowy”.)

parser.dodaj_argument('--druk_ciąg', Wsparcie='Wypisuje dostarczony argument.',domyślny=DOlosowy strunowy.)

argumenty= parser.parse_args()

wydrukować(argumenty.print_string)

Teraz, gdy uruchomisz skrypt test.py bez żadnego argumentu, powinieneś otrzymać losowy ciąg. jako wyjście. Możesz również opcjonalnie użyć słowa kluczowego –print_string, aby wydrukować dowolny wybrany ciąg.

$ ./test.py--print_string LinuxWskazówka.zLinuxHint.com

Zauważ, że możesz uczynić opcjonalny argument obowiązkowym, używając dodatkowego argumentu required=True.

Na koniec możesz również zdefiniować skrócone wersje argumentu za pomocą - (pojedyncza kreska), aby zmniejszyć szczegółowość.

importargparsować

parser =argparsować.Argument Parser(opis=„Program testowy”.)

parser.dodaj_argument(-P, '--druk_ciąg', Wsparcie='Wypisuje dostarczony argument.',domyślny=DOlosowy strunowy.)

argumenty= parser.parse_args()

wydrukować(argumenty.print_string)

Uruchomienie następującego polecenia powinno dać taki sam wynik jak powyżej:

$ ./test.py-p LinuxWskazówka.z

Przykład 3: Obsługa argumentu liczby całkowitej

Aby obsłużyć argumenty wymagające wartości całkowitych, należy ustawić słowo kluczowe type na int, aby zezwolić na walidację i zgłosić błędy w przypadku niespełnienia warunku.

importargparsować

parser =argparsować.Argument Parser(opis=„Program testowy”.)

parser.dodaj_argument('-P', '--druk_ciąg', Wsparcie='Wypisuje dostarczony argument.', rodzaj=int)

argumenty= parser.parse_args()

wydrukować(argumenty.print_string)

Spróbuj uruchomić następujące polecenie:

$ ./test.py-p LinuxWskazówka.z

Powinieneś otrzymać taki błąd:

użycie: test.py [-h] [-p PRINT_STRING]

test.py: błąd: argument -p/--print_string: nieprawidłowa wartość int: 'LinuxHint.com'

Podanie liczby całkowitej da poprawny wynik:

$ ./test.py-P10001000

Przykład 4: Obsługa przełączników prawda i fałsz

Możesz przekazać argumenty bez żadnych wartości, aby traktować je jako flagi True i False za pomocą argumentu akcji.

importargparsować

parser =argparsować.Argument Parser(opis=„Program testowy”.)

parser.dodaj_argument('-P', '--druk_ciąg', Wsparcie='Wypisuje dostarczony argument.',akcja=„store_true”)

argumenty= parser.parse_args()

wydrukować(argumenty.print_string)

Uruchom poniższe polecenie, aby uzyskać prostą wartość True jako dane wyjściowe:

$ ./test.py-P

Jeśli uruchomisz skrypt bez argumentu -p, zamiast tego zostanie przypisana wartość False. Wartość store_true słowa kluczowego action przypisuje wartość True do zmiennej print_string za każdym razem, gdy zostanie podany argument -p, w przeciwnym razie do zmiennej zostanie przypisany False.

Przykład 5: Traktuj wartości argumentów jako listę

Jeśli chcesz uzyskać wiele wartości naraz i przechowywać je na liście, musisz podać słowo kluczowe nargs w następującym formacie:

importargparsować

parser =argparsować.Argument Parser(opis=„Program testowy”.)

parser.dodaj_argument('-P', '--druk_ciąg', Wsparcie='Wypisuje dostarczony argument.',nargi='*')

argumenty= parser.parse_args()

wydrukować(argumenty.print_string)

Uruchom następujące polecenie, aby przetestować powyższy kod:

$ ./test.py-p za b

Powinieneś otrzymać taki wynik:

['a', 'b']

Wniosek

Moduł argparse jest dość obszerny z mnóstwem opcji do dostosowywania zachowania aplikacji wiersza poleceń i analizowania wartości dostarczonych przez użytkownika. Te przykłady dotyczą tylko podstawowego użycia modułu argparse. W przypadku zaawansowanych i złożonych aplikacji mogą być potrzebne różne implementacje. Odwiedzić oficjalna dokumentacja pełne objaśnienie modułu.