Lær Python Control Flow og Loops til at skrive og tune shell-scripts - Del 2


I den forrige artikel i denne Python-serie delte vi en kort introduktion til Python, dens kommandolinjeskal og IDLE. Vi demonstrerede også, hvordan man udfører aritmetiske beregninger, hvordan man gemmer værdier i variabler, og hvordan man udskriver disse værdier tilbage til skærmen. Endelig forklarede vi begreberne metoder og egenskaber i sammenhæng med objektorienteret programmering gennem et praktisk eksempel.

I denne vejledning diskuterer vi kontrolflowet (for at vælge forskellige handlingsforløb afhængigt af oplysninger indtastet af en bruger, resultatet af en beregning eller den aktuelle værdi af en variabel) og sløjfer (for at automatisere gentagne opgaver) og derefter anvende det, vi har hidtil lært at skrive et simpelt shell-script, der viser operativsystemtypen, værtsnavnet, kerneudgivelsen, versionen og maskinvarenavnet.

Dette eksempel, selvom det er grundlæggende, vil hjælpe os med at illustrere, hvordan vi kan udnytte Python OOPs muligheder for at skrive shell-scripts lettere end at bruge almindelige bash-værktøjer.

Med andre ord vil vi gå fra

# uname -snrvm

til

eller

Ser smukt ud, ikke? Lad os rulle ærmerne op og få det til at ske.

Kontroller flow i Python

Som vi sagde tidligere, giver kontrolflow os mulighed for at vælge forskellige resultater afhængigt af en given tilstand. Dens mest enkle implementering i Python er en if/else-klausul.

Den grundlæggende syntaks er:

if condition:
    # action 1
else:
    # action 2

  1. Når betingelsen evalueres til sand, udføres nedenstående kodeblok (repræsenteret af # handling 1 . Ellers køres koden under andet.
  2. En betingelse kan være ethvert udsagn, der kan vurderes til enten sandt eller falsk. For eksempel:

1 < 3 # true
firstName == "Gabriel" # true for me, false for anyone not named Gabriel

  1. I det første eksempel sammenlignede vi to værdier for at afgøre, om den ene er større end den anden.
  2. I det andet eksempel sammenlignede vi firstName (en variabel) for at afgøre, om dens værdi på det aktuelle eksekveringspunkt er identisk med "Gabriel"
  3. Betingelsen og den anden erklæring skal følges af et kolon (:)
  4. Indrykning er vigtig i Python. Linjer med identisk indrykning betragtes som i den samme kodeblok.

Bemærk, at if/else-erklæringen kun er et af de mange kontrolflowværktøjer, der er tilgængelige i Python. Vi gennemgik det her, da vi senere vil bruge det i vores script. Du kan lære mere om resten af værktøjerne i de officielle dokumenter.

Sløjfer i Python

Kort sagt, en sløjfe er en sekvens af instruktioner eller udsagn, der udføres i rækkefølge, så længe en betingelse er sand eller en gang pr. Vare på en liste.

Den mest enkle sløjfe i Python er repræsenteret af for-sløjfen itererer over elementerne i en given liste eller streng, der begynder med det første element og slutter med det sidste.

Grundlæggende syntaks:

for x in example:
	# do this

Her kan eksemplet være enten en liste eller en streng. Hvis førstnævnte, repræsenterer variablen med navnet x hvert element på listen; hvis sidstnævnte repræsenterer x hvert tegn i strengen:

>>> rockBands = []
>>> rockBands.append("Roxette")
>>> rockBands.append("Guns N' Roses")
>>> rockBands.append("U2")
>>> for x in rockBands:
    	print(x)
or
>>> firstName = "Gabriel"
>>> for x in firstName:
    	print(x)

Outputtet fra ovenstående eksempler vises i følgende billede:

Python-moduler

Af åbenlyse grunde skal der være en måde at gemme en sekvens af Python-instruktioner og udsagn i en fil, der kan påberåbes, når det er nødvendigt.

Det er netop, hvad et modul er. Især giver os-modulet en grænseflade til det underliggende operativsystem og giver os mulighed for at udføre mange af de operationer, vi normalt udfører i en kommandolinjeprompt.

Som sådan indeholder den flere metoder og egenskaber, der kan kaldes som vi forklarede i den foregående artikel. Vi er dog nødt til at importere (eller inkludere) det i vores miljø ved hjælp af importordet:

>>> import os

Lad os udskrive den aktuelle arbejdsmappe:

>>> os.getcwd()

Lad os nu sætte alt dette sammen (sammen med de begreber, der blev diskuteret i den foregående artikel) for at skrive det ønskede script.