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 argparseparser = 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 argparseparser = 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 argparseparser = 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.comLinuxWskazó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 argparseparser = 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.comPrzykł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 argparseparser = 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.comPowinieneś 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 1000Przykł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 argparseparser = 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-pJeś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 argparseparser = 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.