Podkomendy i opcje
Buduj złożone interfejsy CLI
Podkomendy i opcje to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Dlaczego podkomendy?
Narzędzia takie jak git mają podkomendy: git add, git commit. argparse obsługuje je za pomocą subparserów, z których każda podkomenda ma własne argumenty.
import argparse
parser = argparse.ArgumentParser(prog='tool')
sub = parser.add_subparsers(dest='command')
print('subparsers ready')Dodawanie subparserów
add_subparsers zwraca obiekt, którego metoda add_parser tworzy poszczególne podkomendy. Parametr dest przechowuje informację o wybranej podkomendzie.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
sub.add_parser('start')
sub.add_parser('stop')
args = parser.parse_args(['start'])
print('command:', args.command)Argumenty poszczególnych podkomend
Każdy subparser może definiować własne argumenty. Podkomenda add w tym przykładzie przyjmuje nazwę, natomiast list nie przyjmuje żadnych argumentów.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('name')
sub.add_parser('list')
args = parser.parse_args(['add', 'milk'])
print(args.command, args.name)Wybór działania na podstawie polecenia
Po przeanalizowaniu argumentów należy sprawdzić wartość args.command, aby uruchomić właściwą logikę.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('item')
sub.add_parser('clear')
args = parser.parse_args(['add', 'eggs'])
if args.command == 'add':
print('adding', args.item)
elif args.command == 'clear':
print('clearing all')set_defaults dla funkcji obsługi
Przejrzysty wzorzec polega na przypisaniu funkcji do każdego subparsera za pomocą set_defaults(func=...), a następnie wywołaniu args.func(args).
import argparse
def do_hi(args):
print('hi', args.who)
parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
p = sub.add_parser('hi')
p.add_argument('who')
p.set_defaults(func=do_hi)
args = parser.parse_args(['hi', 'Ana'])
args.func(args)Wspólne opcje za pomocą parserów nadrzędnych
Parser nadrzędny przechowuje opcje wspólne dla kilku podkomend, dzięki czemu nie trzeba ich powtarzać. Należy przekazać parents=[base] i add_help=False.
import argparse
base = argparse.ArgumentParser(add_help=False)
base.add_argument('--verbose', action='store_true')
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
sub.add_parser('run', parents=[base])
args = parser.parse_args(['run', '--verbose'])
print(args.cmd, args.verbose)Domyślne wartości poszczególnych opcji
Opcje podkomend mogą mieć własne wartości domyślne i typy, podobnie jak argumenty najwyższego poziomu.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
p = sub.add_parser('scale')
p.add_argument('--factor', type=float, default=1.0)
args = parser.parse_args(['scale'])
print('factor:', args.factor)Dodawanie powtarzanych opcji
action='append' pozwala podać flagę wiele razy, zapisując każdą wartość na liście.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--tag', action='append', default=[])
args = parser.parse_args(['--tag', 'a', '--tag', 'b'])
print(args.tag)Zliczanie flag
action='count' zlicza, ile razy pojawia się flaga. Jest to klasyczny wzorzec zwiększania szczegółowości, na przykład -vvv.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-v', action='count', default=0)
args = parser.parse_args(['-v', '-v', '-v'])
print('verbosity level:', args.v)Narzędzie z dwiema podkomendami
Połączenie podkomend, funkcji obsługi i wspólnych opcji pozwala utworzyć uporządkowany interfejs wiersza poleceń z wieloma poleceniami.
import argparse
def add(args):
print('add', args.item, 'qty', args.qty)
def remove(args):
print('remove', args.item)
parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
pa = sub.add_parser('add')
pa.add_argument('item')
pa.add_argument('--qty', type=int, default=1)
pa.set_defaults(func=add)
pr = sub.add_parser('remove')
pr.add_argument('item')
pr.set_defaults(func=remove)
args = parser.parse_args(['add', 'pen', '--qty', '3'])
args.func(args)Wymagana podkomenda
Należy ustawić required=True dla subparserów, aby użytkownik musiał wybrać polecenie. W przeciwnym razie argparse zgłosi błąd.
import argparse
parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd', required=True)
sub.add_parser('go')
args = parser.parse_args(['go'])
print('chosen:', args.cmd)Szybki sprawdzian
Sprawdź swoje zrozumienie podkomend i opcji.
Podsumowanie
Poznałeś podkomendy i opcje:
add_subparsersiadd_parsersłużą do tworzenia narzędzi z wieloma poleceniami.set_defaults(func=...)kieruje wykonanie do funkcji obsługi.- Parsery nadrzędne udostępniają wspólne opcje.
- Operacje
appendicountobsługują powtarzane flagi.
Następny temat: biblioteka Click do tworzenia interfejsów wiersza poleceń za pomocą dekoratorów.
Często zadawane pytania
Czy lekcja „Podkomendy i opcje” jest bezpłatna?
Tak — pełny tekst „Podkomendy i opcje” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Podkomendy i opcje”?
Buduj złożone interfejsy CLI Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Podkomendy i opcje”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?
Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy argparse
- Podkomendy i opcje
- Biblioteka Click
- Bogate dane wyjściowe terminala