[Python] Excuter une commande externe
Alors que j’utilisais avec grand plaisir et grande fierté la fonction subprocess.check_output pour obtenir le résultat de mes commandes système associé à mes investigations, j’ai eu la désagréable surprise de se voir se croiser mon flux d’erreur avec mon flux de sortie standard dans le résultat ce qui le rendait méchamment inutilisable.
Réponse à la problématique
Utilisation de subprocess.run.
!/usr/bin/python3
# -*- coding: utf-8 -*-
import subprocess
executable="/home/eric/gesterr"
cmd_output = subprocess.run([executable], capture_output=True, text=True, encoding = 'utf8')
print ("Sortie : ", cmd_output.stdout)
print ("Erreur : ", cmd_output.stderr)Le programme gesterr est un programme maison de manière à bien cerner les attendus.
#include <stdio.h>
int main()
{
fprintf(stdout, "Sortie standard");
fprintf(stderr, "Sortie d'erreur");
}Pour obtenir un exécutable à partir de ce source,
- mettre ce code dans un fichier de type texte en .c
- exécuter la ligne de commande suivante :
gcc gesterr.c -o gesterr
Documents
-
Code source - gesterr.c (C source - 108 octets)
Accueil > Linux > Développement > [Python] Excuter une commande externe