Python Academy · Lektion

Underkommandoer og indstillinger

Opbyg komplekse CLI'er

Lektion 2 af 413 trin

Underkommandoer og indstillinger er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.

Hvorfor underkommandoer?

Værktøjer som git har underkommandoer: git add og git commit. argparse understøtter dette gennem subparsers, hvor hver underkommando har sine egne argumenter.

import argparse

parser = argparse.ArgumentParser(prog='tool')
sub = parser.add_subparsers(dest='command')
print('subparsers ready')

Tilføjelse af subparsers

add_subparsers returnerer et objekt, hvis add_parser-metode opretter hver underkommando. dest gemmer, hvilken der blev valgt.

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)

Argumenter pr. underkommando

Hver subparser kan definere sine egne argumenter. Underkommandoen add her tager et navn, mens list ikke tager nogen.

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)

Fordeling ud fra kommandoen

Efter fortolkningen kan du forgrene programmet ud fra args.command for at køre den rigtige 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 til håndteringsfunktioner

En ren løsning er at knytte en funktion til hver subparser med set_defaults(func=...) og derefter kalde 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)

Delte valgmuligheder via overordnede parsere

En overordnet parser indeholder valgmuligheder, der er fælles for flere underkommandoer, så du undgår gentagelser. Send parents=[base] og 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)

Standardværdier for hver valgmulighed

Valgmuligheder for underkommandoer kan have deres egne standardværdier og typer, ligesom argumenter på øverste niveau.

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)

Tilføjelse af gentagne valgmuligheder

action='append' gør det muligt at angive et flag flere gange, så hver værdi samles i en liste.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--tag', action='append', default=[])
args = parser.parse_args(['--tag', 'a', '--tag', 'b'])
print(args.tag)

Optælling af flag

action='count' tæller, hvor mange gange et flag forekommer – det klassiske mønster med -vvv for detaljeringsniveau.

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)

Et værktøj med to kommandoer

Ved at kombinere underkommandoer, håndteringsfunktioner og delte valgmuligheder får du en struktureret CLI med flere kommandoer.

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)

Påkrævet underkommando

Sæt required=True på subparsers, så brugeren skal vælge en kommando. Ellers giver argparse en fejl.

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)

Hurtig afprøvning

Afprøv din forståelse af underkommandoer og valgmuligheder.

Opsamling

Du har lært om underkommandoer og valgmuligheder:

  • add_subparsers og add_parser opbygger værktøjer med flere kommandoer.
  • set_defaults(func=...) sender arbejdet videre til håndteringsfunktioner.
  • Overordnede parsere deler fælles valgmuligheder.
  • Handlingerne append og count håndterer gentagne flag.

Næste emne: Click-biblioteket til kommandolinjegrænseflader baseret på dekoratorer.

Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “Underkommandoer og indstillinger” gratis?

Ja — hele teksten til “Underkommandoer og indstillinger” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Underkommandoer og indstillinger”?

Opbyg komplekse CLI'er Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Underkommandoer og indstillinger”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Grundlæggende om argparse
  2. Underkommandoer og indstillinger
  3. Click-biblioteket
  4. Indholdsrigt terminaloutput
← Tilbage til Python Academy