Exécuter le Bash Command en Python
-
Exécuter des commandes Bash en Python en utilisant la méthode
run()
du modulesubprocess
-
Exécuter des commandes bash en Python en utilisant la méthode
Popen()
du modulesubprocess
Ce tutoriel explique les différentes façons d’exécuter les commandes de bash en Python. Bash est un interpréteur de langage de commande ou shell utilisé dans les systèmes d’exploitation Linux et Unix. Et la commande bash est une instruction d’un utilisateur au système d’exploitation pour effectuer une tâche spécifique, comme la commande cd
pour changer le répertoire courant, la commande mkd
pour créer un nouveau répertoire, et la commande ls
pour lister les fichiers et les sous-répertoires dans un répertoire, etc.
Exécuter des commandes Bash en Python en utilisant la méthode run()
du module subprocess
La méthode run()
du module subprocess
prend la commande passée comme une chaîne de caractères. Pour obtenir la sortie ou l’erreur de sortie de la commande, nous devrions mettre l’argument stdout
et l’argument stderr
à PIPE
. La méthode run
renvoie un processus terminé contenant stdout
, stderr
, et returncode
comme attributs.
L’exemple de code montre comment utiliser la méthode run()
pour exécuter une commande bash en Python.
from subprocess import PIPE
comp_process = subprocess.run("ls", stdout=PIPE, stderr=PIPE)
print(comp_process.stdout)
Exécuter des commandes bash en Python en utilisant la méthode Popen()
du module subprocess
La méthode Popen()
du module subprocess
a une fonctionnalité similaire à la méthode run()
, mais elle est délicate à utiliser. Contrairement à la méthode run()
, la méthode Popen()
ne renvoie pas un objet de processus terminé en sortie, et le processus lancé par la méthode Popen()
doit être traité séparément, ce qui le rend difficile à utiliser.
Au lieu du processus achevé, la méthode Popen()
renvoie un objet de processus en sortie. Le processus renvoyé doit être tué en utilisant la méthode process.kill()
ou process.terminate()
.
Comme pour la méthode run()
, nous devons définir les arguments stdout
et stderr
de la méthode Popen()
pour obtenir la sortie de la commande et l’erreur. Et la sortie et l’erreur peuvent être accédées par l’objet de processus retourné en utilisant la méthode process.communicate
.
L’exemple de code ci-dessous montre comment exécuter une commande bash en utilisant la méthode Popen()
et comment obtenir les valeurs stdout
et stderr
et ensuite tuer le processus en Python :
from subprocess import PIPE
process = subprocess.Popen("ls", stdout=PIPE, stderr=PIPE)
output, error = process.communicate()
print(output)
process.kill