Commandes Shell avec Python – Python, en tant que langage polyvalent, offre une multitude de fonctionnalités pour interagir avec le système d’exploitation, notamment l’exécution de commandes shell. Cet article explorera différentes méthodes pour exécuter des commandes shell en utilisant Python.
Vous pouvez d’ailleurs retrouver l’ensemble de nos tutoriels et articles sur le développement logiciel : cliquez ici.
La Bibliothèque Subprocess
La bibliothèque subprocess
est l’outil de prédilection pour exécuter des commandes shell depuis Python. Voici un exemple de base :
import subprocess
# Exécuter une commande simple
result = subprocess.run("ls", shell=True, capture_output=True, text=True)
# Afficher la sortie
print(result.stdout)
Dans cet exemple, la fonction subprocess.run
est utilisée pour exécuter la commande « ls » (liste les fichiers du répertoire en cours). Les paramètres shell=True
indiquent que la commande doit être exécutée via le shell du système.
Gestion des Entrées et Sorties
La bibliothèque subprocess
permet également de gérer les entrées et sorties, ce qui est utile pour les commandes interactives. Voici un exemple :
import subprocess
# Exécuter une commande avec des entrées
result = subprocess.run("grep hello", input="hello world", shell=True, capture_output=True, text=True)
# Afficher la sortie
print(result.stdout)
Dans cet exemple, la commande « grep hello » recherche le mot « hello » dans l’entrée fournie (« hello world »).
Exécution Asynchrone
Si vous avez besoin d’exécuter plusieurs commandes en parallèle, vous pouvez utiliser asyncio
avec subprocess
:
import asyncio
import subprocess
async def run_command(command):
process = await asyncio.create_subprocess_shell(command, stdout=asyncio.subprocess.PIPE, text=True)
output, _ = await process.communicate()
print(f"Output of {command}: {output}")
# Exécuter plusieurs commandes en parallèle
asyncio.run(asyncio.gather(run_command("ls"), run_command("echo Hello")))
Cet exemple utilise asyncio.create_subprocess_shell
pour exécuter les commandes de manière asynchrone.
Conclusion
Python offre des moyens puissants et flexibles pour exécuter des commandes shell, que ce soit pour automatiser des tâches système, interagir avec des programmes externes, ou même créer des scripts complexes. En utilisant la bibliothèque subprocess
, vous pouvez gérer facilement les entrées, les sorties, et même exécuter des commandes de manière asynchrone.
Soyez le premier à commenter