Python Academy · Les

Opdrachten uitvoeren met subprocess

Voer externe programma's uit

Les 1 van 413 stappen

Opdrachten uitvoeren met subprocess is een gratis Python Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.

Wat is subprocess?

Met de module subprocess kan je Python-programma externe opdrachten uitvoeren en andere programma's starten, net zoals wanneer je ze in een terminal typt.

import subprocess

result = subprocess.run(['echo', 'hello'])
print('return code:', result.returncode)

De basis van subprocess.run

subprocess.run() is het aanbevolen startpunt. Je geeft de opdracht door als een lijst met argumenten: eerst de programmanaam en daarna elk argument afzonderlijk.

import subprocess

result = subprocess.run(['echo', 'one', 'two'])
print('done with code', result.returncode)

Waarom een lijst en geen tekenreeks?

Door een lijst door te geven voorkom je dat de shell je opdracht ontleedt. Dat voorkomt problemen met aanhalingstekens en risico's op shellinjectie. Elk element is één argument.

import subprocess

# Safe: each piece is its own argument
subprocess.run(['echo', 'a file with spaces.txt'])

Het object CompletedProcess

run() geeft een CompletedProcess terug met de args, returncode en, als die is vastgelegd, de uitvoer. Code 0 betekent dat de opdracht is geslaagd.

import subprocess

cp = subprocess.run(['true'])
print('args:', cp.args)
print('returncode:', cp.returncode)

Retourcodes controleren

Een niet-nul retourcode betekent meestal dat de opdracht is mislukt. Je kunt deze na de aanroep handmatig controleren.

import subprocess

cp = subprocess.run(['ls', '/no/such/path'])
if cp.returncode != 0:
    print('command failed with', cp.returncode)

Bij fouten een uitzondering opwerpen met check=True

Geef check=True door om run() automatisch CalledProcessError te laten opwerpen wanneer de opdracht eindigt met een niet-nul retourcode.

import subprocess

try:
    subprocess.run(['false'], check=True)
except subprocess.CalledProcessError as e:
    print('failed with code', e.returncode)

Argumenten doorgeven

Extra argumenten voor de opdracht zijn gewoon meer items in de lijst. Hier geven we een map weer in uitgebreid formaat.

import subprocess

subprocess.run(['echo', '-n', 'no newline'])
print()
print('above echo had -n flag')

Een time-out instellen

Gebruik timeout om een opdracht af te breken die te lang duurt. Dit werpt TimeoutExpired op.

import subprocess

try:
    subprocess.run(['sleep', '5'], timeout=0.1)
except subprocess.TimeoutExpired:
    print('command took too long, aborted')

Werkmap

Het argument cwd voert de opdracht uit in een specifieke map zonder de eigen werkmap van je programma te wijzigen.

import subprocess

subprocess.run(['pwd'], cwd='/tmp')

De optie shell=True

Met shell=True geef je één opdrachttekenreeks door die door de shell wordt geïnterpreteerd. Dit maakt pijpen en jokerpatronen mogelijk, maar is riskant met niet-vertrouwde invoer. Geef de voorkeur aan de lijstvorm.

import subprocess

subprocess.run('echo hello && echo world', shell=True)

os.system vermijden

Het oude os.system geeft alleen een afsluitcode terug en biedt geen veilige manier om argumenten door te geven of uitvoer vast te leggen. subprocess.run vervangt dit in alle nieuwe code.

import subprocess

# Modern, safe approach
cp = subprocess.run(['echo', 'modern way'])
print('exit code:', cp.returncode)

Korte controle

Toets je begrip van het uitvoeren van opdrachten.

Samenvatting

Je hebt geleerd opdrachten uit te voeren met subprocess:

  • subprocess.run([...]) voert veilig een extern programma uit.
  • De functie geeft een CompletedProcess terug met returncode.
  • check=True werpt een uitzondering op bij fouten; timeout breekt trage opdrachten af.
  • Geef de voorkeur aan de lijstvorm boven shell=True.

Volgende: de uitvoer van de opdracht vastleggen.

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
76
Lessen
320

Veelgestelde vragen

Is de les “Opdrachten uitvoeren met subprocess” gratis?

Ja — de volledige tekst van “Opdrachten uitvoeren met subprocess” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.

Wat leer ik in “Opdrachten uitvoeren met subprocess”?

Voer externe programma's uit Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Python Academy te beginnen?

Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Opdrachten uitvoeren met subprocess”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Python Academy?

Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Opdrachten uitvoeren met subprocess
  2. Uitvoer vastleggen
  3. Omgeving en de os-module
  4. shutil voor bestandsbewerkingen
← Terug naar Python Academy