Opdrachten uitvoeren met subprocess
Voer externe programma's uit
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
CompletedProcessterug metreturncode. check=Truewerpt een uitzondering op bij fouten;timeoutbreekt trage opdrachten af.- Geef de voorkeur aan de lijstvorm boven
shell=True.
Volgende: de uitvoer van de opdracht vastleggen.
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
- Opdrachten uitvoeren met subprocess
- Uitvoer vastleggen
- Omgeving en de os-module
- shutil voor bestandsbewerkingen