Exécuter des commandes Shell avec Python : guide pratique

Exécuter des commandes Shell avec Python - guide pratique
Exécuter des commandes Shell avec Python - guide pratique

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.

[ Article lu 1 fois aujourd'hui ]
A propos Judicaël Paquet 942 Articles
  Paquet Judicaël (expert en transformation et AI) Mes activités en France et en Suisse : - ingénieur prompt - coach AI - architecte de transformation agile - formations agiles personnalisées - sensibilisations et coaching de manager - audits de maturité agile et de situations - coaching agile (équipes, orga, product owner, scrum master, coach agile) Spécialités : scrum, kanban, management 3.0, agilité à l’échelle, lean startup, méthode agile, prompt AI, Intelligence artificielle. [Me contacter]

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*


Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.