Opsamling af output
Læs stdout og stderr
Opsamling af output 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.
Opsamling af stdout
Hvis du vil læse det, en kommando udskriver, skal du angive capture_output=True. Teksten findes i resultatets attribut stdout.
import subprocess
cp = subprocess.run(['echo', 'hello'], capture_output=True)
print(cp.stdout)Bytes kontra tekst
Som standard er uddata bytes. Angiv text=True for i stedet at få afkodede strenge, hvilket normalt er det, du ønsker.
import subprocess
cp = subprocess.run(['echo', 'hello'], capture_output=True, text=True)
print(repr(cp.stdout))Fjernelse af afsluttende linjeskift
Kommandoers uddata slutter ofte med et linjeskift. Brug .strip() til at fjerne det, før du bruger værdien.
import subprocess
cp = subprocess.run(['echo', 'value'], capture_output=True, text=True)
clean = cp.stdout.strip()
print('[' + clean + ']')Opsamling af stderr
Fejl sendes normalt til stderr, som opsamles separat. Det holder normale uddata og fejlmeddelelser adskilt.
import subprocess
cp = subprocess.run(['ls', '/no/such/dir'], capture_output=True, text=True)
print('stdout:', repr(cp.stdout))
print('stderr:', cp.stderr.strip())Brug af uddata i kode
Opsamlede uddata er blot en streng, så du kan analysere dem: opdele dem i linjer, konvertere tal eller sende dem videre til resten af dit program.
import subprocess
cp = subprocess.run(['printf', 'a\nb\nc\n'], capture_output=True, text=True)
lines = cp.stdout.splitlines()
print('line count:', len(lines))
print(lines)Omdirigering af stderr til stdout
Hvis du vil flette fejluddata ind i den normale strøm, skal du angive stderr=subprocess.STDOUT. Begge dele vises derefter i stdout.
import subprocess
cp = subprocess.run(['ls', '/no/such/dir'], stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, text=True)
print(cp.stdout.strip())Angivelse af inddata
Send data til en kommandos standardinddata med argumentet input. Her sender vi tekst gennem en pipe til cat.
import subprocess
cp = subprocess.run(['cat'], input='piped in\n', capture_output=True, text=True)
print(cp.stdout.strip())Genvejen check_output
subprocess.check_output() kører en kommando og returnerer dens stdout direkte, mens den hæver en undtagelse ved fejl. Det er en praktisk enkeltlinje til opsamling.
import subprocess
out = subprocess.check_output(['echo', 'quick'], text=True)
print(out.strip())Kassering af uddata
Hvis du vil gøre en kommando lydløs, skal du omdirigere dens strømme til subprocess.DEVNULL.
import subprocess
cp = subprocess.run(['echo', 'silent'], stdout=subprocess.DEVNULL)
print('return code only:', cp.returncode)Håndtering af fejl med uddata
Når du bruger check=True, indeholder den hævede CalledProcessError stadig de opsamlede output og stderr til fejlfinding.
import subprocess
try:
subprocess.run(['ls', '/missing'], capture_output=True, text=True, check=True)
except subprocess.CalledProcessError as e:
print('failed:', e.returncode)
print('stderr:', e.stderr.strip())Samling af det hele
En typisk hjælpefunktion kører en kommando, kontrollerer, om den lykkedes, og returnerer ren tekst. Dette samler det almindelige mønster.
import subprocess
def capture(cmd):
cp = subprocess.run(cmd, capture_output=True, text=True, check=True)
return cp.stdout.strip()
print(capture(['echo', 'final result']))Hurtigtjek
Afprøv din forståelse af opsamling af uddata.
Opsummering
Du har lært at opsamle uddata:
capture_output=Truesammen medtext=Truegiver strengenestdoutogstderr.- Flet strømme sammen med
stderr=subprocess.STDOUT, og gør dem lydløse medDEVNULL. - Send inddata via
input=;check_outputer en genvej. - Fejl indeholder opsamlede uddata til fejlfinding.
Næste emne: læsning af miljøvariabler og modulet os.
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 “Opsamling af output” gratis?
Ja — hele teksten til “Opsamling af output” 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 “Opsamling af output”?
Læs stdout og stderr 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 “Opsamling af output”?
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
- Kør kommandoer med subprocess
- Opsamling af output
- Miljø og os-modulet
- shutil til filoperationer