Pyton

Jak dodać argumenty wiersza poleceń do skryptu Pythona??

Jak dodać argumenty wiersza poleceń do skryptu Pythona??
Jeśli opracowałeś skrypt lub aplikację w języku Python, które mają być uruchamiane głównie w emulatorach terminali, a nawet w aplikacjach GUI, dodanie argumentów wiersza poleceń może poprawić jego użyteczność, czytelność kodu, strukturę aplikacji i ogólną przyjazność aplikacji dla użytkownika 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 basha i innych programach opartych na C/C++.

Aby dodać argumenty do skryptów Pythona, będziesz musiał użyć wbudowanego modułu o nazwie „argparsować”. 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ą odpowiedniego „typu”. Błędy są zgłaszane, jeśli w argumentach są 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:

importuj argparse
parser = argparse.ArgumentParser(description='Program testowy.')
argumenty = parser.parse_args()

Pierwsza instrukcja importuje moduł „argparse”. Następnie tworzona jest nowa instancja obiektu „ArgumentParser”, a 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ś przykładowy kod podany powyżej w pliku o nazwie „test.py”, uruchomienie poniższych poleceń pomoże Ci w komunikatach związanych z programem.

$ ./test.py-h
$ ./test.py – pomoc

Powinieneś otrzymać jakiś wynik podobny do tego:

użycie: test.py [-h]
Opcjonalne argumenty programu testowego:
-h, --help pokaż tę wiadomość pomocy i wyjdź

Zauważ, że do przykładowego kodu, o którym mowa powyżej, 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ć opisy 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:

importuj argparse
parser = argparse.ArgumentParser(description='Program testowy.')
parser.add_argument("print_string", help="Wydrukowuje dostarczony argument.")
argumenty = parser.parse_args()
drukuj(argumenty.print_string)

Dodano nowe oświadczenie, pokazujące użycie metody „add_argument”. Każdy argument dodany podczas uruchamiania skryptu będzie traktowany jako obiekt „print_string” przez „ArgumentParser”.

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ść „Brak”, chyba że została zastąpiona.

Jeszcze raz spójrz na komunikat pomocy:

użycie: test.py [-h] [ciąg_druku]
Argumenty pozycyjne programu testowego:
print_string wyświetla podany argument the
argumenty opcjonalne:
-h, --help pokaż tę wiadomość pomocy i wyjdź

Jeden z wierszy na wyjściu mówi „argumenty pozycyjne”. Ponieważ nie zdefiniowano słowa kluczowego dla argumentu, obecnie argument jest traktowany jako „argument pozycyjny”, gdzie 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 wartości domyślne za pomocą argumentu „default”.

importuj argparse
parser = argparse.ArgumentParser(description='Program testowy.')
parser.add_argument("--print_string", help="Wydrukowuje dostarczony argument.", default=”Losowy ciąg.”)
argumenty = parser.parse_args()
drukuj(argumenty.print_string)

Teraz, kiedy uruchomisz „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” do wydrukowania dowolnego wybranego ciągu.

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

Zwróć uwagę, że możesz ustawić opcjonalny argument jako obowiązkowy, używając dodatkowego argumentu „wymagany = Prawda”.

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

importuj argparse
parser = argparse.ArgumentParser(description='Program testowy.')
parser.add_argument("-p", "--print_string", help="Wypisuje podany argument.", default=”Losowy ciąg.”)
argumenty = parser.parse_args()
drukuj(argumenty.print_string)

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

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

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 umożliwić walidację i zgłaszać błędy w przypadku niespełnienia warunku.

importuj argparse
parser = argparse.ArgumentParser(description='Program testowy.')
parser.add_argument("-p", "--print_string", help="Wypisuje podany argument.", typ=int)
argumenty = parser.parse_args()
drukuj(argumenty.print_string)

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

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

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 ci poprawny wynik:

$ ./test.py -p 1000 1000

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 „action”.

importuj argparse
parser = argparse.ArgumentParser(description='Program testowy.')
parser.add_argument("-p", "--print_string", help="Wypisuje podany argument.", akcja="store_true")
argumenty = parser.parse_args()
drukuj(argumenty.print_string)

Uruchom poniższe polecenie, aby uzyskać proste „prawda” jako wynik:

$ ./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 argument „-p” jest wyraźnie określony, w przeciwnym razie do zmiennej jest przypisywana wartość 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:

importuj argparse
parser = argparse.ArgumentParser(description='Program testowy.')
parser.add_argument("-p", "--print_string", help="Wypisuje podany argument.", nargs='*')
argumenty = parser.parse_args()
drukuj(argumenty.print_string)

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

$ ./test.py -p "a" "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 podanych przez użytkownika. Te przykłady dotyczą tylko podstawowego zastosowania modułu „argparse”. W przypadku zaawansowanych i złożonych aplikacji możesz potrzebować różnych implementacji. Odwiedź oficjalną dokumentację, aby uzyskać pełne wyjaśnienie modułu.

Gry Jak używać AutoKey do automatyzacji gier Linux
Jak używać AutoKey do automatyzacji gier Linux
AutoKey to narzędzie do automatyzacji pulpitu dla systemów Linux i X11, zaprogramowane w Python 3, GTK i Qt. Korzystając ze skryptów i funkcji MAKRO, ...
Gry How to Show FPS Counter in Linux Games
How to Show FPS Counter in Linux Games
Linux gaming got a major push when Valve announced Linux support for Steam client and their games in 2012. Since then, many AAA and indie games have m...
Gry How to download and Play Sid Meier's Civilization VI on Linux
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...