Subprocess

On peut vouloir appeler un programme extérieur depuis notre script et récupérer sa sortie

Module subprocess (import subprocess)

Commande à donner sous forme de liste de chaînes de caractères, chaque argument étant une nouvelle chaîne.

Ajouter l'option stdout pour capturer la sortie et text pour automatiquement la décoder (comme à l'ouverture d'un fichier).

Renvoie un objet CompletedProcess, la sortie est accessible sur l'argument .stdout.

import subprocess
commande = ["programme", "argument1", "argument2"...]
process = subprocess.run(
        commande,
        stdout=subprocess.PIPE,
        text=True
)
print(process.stdout)

Arguments de subprocess utiles :

  • stdout=subprocess.PIPE : récupérer la sortie standard du programme

  • check=True : génère une exception si le programme rencontre une erreur (code de sortie ≠ 0)

  • shell=True : exécuter la commande dans un shell
    (pour utiliser les pipes | , les redirections >, …).
    Dans ce cas, la commande doit être une chaîne de caractères.

  • timeout=10 : définit un délai d'exécution, en secondes. Une erreur se produira si le programme dépasse ce délai.

Consultez la documentation !
https://docs.python.org/3/library/subprocess.html