Underkommandoer og indstillinger
Opbyg komplekse CLI'er
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_subparsersogadd_parseropbygger værktøjer med flere kommandoer.set_defaults(func=...)sender arbejdet videre til håndteringsfunktioner.- Overordnede parsere deler fælles valgmuligheder.
- Handlingerne
appendogcounthåndterer gentagne flag.
Næste emne: Click-biblioteket til kommandolinjegrænseflader baseret på dekoratorer.
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
- Grundlæggende om argparse
- Underkommandoer og indstillinger
- Click-biblioteket
- Indholdsrigt terminaloutput