De subprocess-module in Python is handig als je een proces wilt starten, input wilt doorgeven aan dat proces en de output wilt krijgen. Je kunt het beschouwen als een manier om de command shell van je systeem te openen en commando’s uit te voeren.
Het kan heel nuttig zijn als je bijvoorbeeld een Python-script hebt dat andere software moet starten, of als je een manier nodigt hebt om bash-script commando’s uit te voeren in een Python-programma.
Hier zijn enkele basismanieren om de subprocess-module te gebruiken:
Een proces starten
Het starten van een proces met de subprocess-module is eenvoudig. Je roept gewoon de `subprocess.run() `-functie aan en geeft een lijst door van de naam van het proces en alle argumenten die je wilt doorgeven.
Je kunt bijvoorbeeld het volgende doen om “echo” te roepen met “Hello, world!” als argument:
```
import subprocess
subprocess.run([“echo”, “Hello, world!”])
```
Werken met de output
Als je de output van een subprocess naar je script moet doorsturen (in plaats van naar de console), kun je de `capture_output`-argument naar `run()` op `True` instellen. Dit zal de output vastleggen en teruggeven in het `subprocess.CompletedProcess`-object dat `run()` geeft.
Hier is een voorbeeld:
```
import subprocess
result = subprocess.run([“echo”, “Hello, world!”], capture_output=True, text=True)
print(result.stdout)
```
In deze code probeer je “Hello, world!” te echoën en de output te vangen. Merkt op dat ik ook `text=True` heb doorgegeven, zodat de output als een string wordt geïnterpreteerd in plaats van als bytes.
Doorsturen van input
Als je input moet doorgeven aan een subprocess, kun je de `input`-parameter van `run()` gebruiken, zoals dit:
```
import subprocess
result = subprocess.run([“sort”], input=“banana\napple\ncherry”, capture_output=True, text=True)
print(result.stdout)
```
Deze code probeert de ‘sort’-opdracht te geven (die items sorteert die het ontvangt via stdin) met een set ongesorteerde woorden. Het vangt vervolgens de output op en drukt deze af.
Vergeet niet dat om deze manier te gebruiken, je nodig hebt om het commando dat je wilt uitvoeren door voedt input of output in de geschikte manier. Als bijvoorbeeld je probeert om input voor een commando dat niet luistert naar stdin te voeden, dan zou het gewoon genegeerd worden.