Révolutionnez votre Scripting avec Subprocess

Plongez dans un Monde de Puissance et de Contrôle: Découvrez Comment Subprocess Déchaîne la Force des Commandes Système au Cœur de Vos Scripts Python.
19 juin 2023 par
Révolutionnez votre Scripting avec Subprocess
Kevin Andreazza
| Aucun commentaire pour l'instant


Découvrez le pouvoir de la bibliothèque `subprocess` en Python, un outil incontournable pour tout développeur Python qui se respecte. Que vous soyez un débutant cherchant à élargir vos compétences ou un professionnel expérimenté désireux de peaufiner votre maîtrise, notre guide approfondi sur la bibliothèque `subprocess` est là pour vous aider à naviguer avec confiance dans le monde de l'exécution de processus et de commandes externes en Python.

.run()

Commençons par dévoiler les secrets de la méthode .run(),  comment utiliser efficacement avec ses arguments avec des exemples concrets pour vous aider à comprendre son fonctionnement. Apprenez à maîtriser la bibliothèque subprocess et à l'utiliser pour améliorer la flexibilité et la puissance de vos programmes Python.



La méthode .run() est l'une des principales méthodes que vous utiliserez avec la bibliothèque subprocess.

La méthode subprocess.run() est une méthode de haut niveau pour créer et gérer des processus. Elle offre une grande flexibilité et est recommandée pour les nouvelles applications qui n'ont pas besoin de la compatibilité descendante de l'ancienne API.

import subprocess  #importer la bibliothèque

  • ​subprocess.run(["ls", "-l"]) #executer le processus

Dans cet exemple, nous exécutons la commande ls -l qui liste les fichiers dans le répertoire courant en détail. Notez que la commande et ses arguments sont passés en tant que liste.

.run( ARGUMENTS )


Dans cette section, nous allons dévoiler les secrets des neuf arguments de la méthode subprocess.run() en Python. Chaque argument, de args à universal_newlines, sera détaillé pour vous aider à optimiser l'exécution de vos processus et commandes externes. Préparez-vous à découvrir comment ces arguments peuvent transformer votre code Python et booster votre productivité. C'est le moment de maîtriser subprocess.run() comme jamais auparavant. 

Alors, commençons sans plus attendre !

  • subprocess.run(["ls", "-l"])

Nous exécutons la commande "ls" "-l" qui liste les fichiers dans le répertoire courant en détail.

  • result = subprocess.run(["ls", "-l"], stdout=subprocess.PIPE, encoding='utf-8', errors='ignore')

print(result.stdout) # afficher la sortie

Dans l'exemple, nous redirigeons la sortie de la commande ls -l vers un PIPE, ce qui nous permet de capturer cette sortie dans notre programme Python.

  • subprocess.run("ls -l", shell=True)

Si cet argument est True, la commande spécifiée sera exécutée via le shell. Dans l'exemple, nous exécutons la commande ls -l via le shell.

  • subprocess.run("ls -l", cwd="/home/user")

Nous exécutons la commande ls -l dans le répertoire /home/user.

  • ​try:
             
    subprocess.run("ls -l", timeout=1)


  • except subprocess.TimeoutExpired:
              print("Le processus a dépassé le délai imparti.")

Dans l'exemple, nous tuons la commande ls -l si elle ne se termine pas dans la seconde.

  • try:
              subprocess.run("ls -l", check=True)

  • except subprocess.CalledProcessError:
              print("La commande a échoué.")

Par exemple, subprocess.run("commande", check=True) lèvera une exception si la commande renvoie un code d'erreur.

  • result = subprocess.run(["ls", "-l"], stdout=subprocess.PIPE, encoding='utf-8', errors='ignore')

print(result.stdout)

Dans cet exemple, nous spécifions l'encodage 'utf-8' et l'option 'ignore' pour la gestion des erreurs lors de la lecture de la sortie de la commande. Cela garantit que la sortie est décodée correctement et que les erreurs sont gérées de manière appropriée.

  • env = {"PATH": "/usr/local/bin"}

subprocess.run("ls -l", env=env)

Par exemple, nous définissons la variable env en utilisant un dictionnaire. Nous spécifions deux variables d'environnement : PATH avec la valeur /usr/local/bin et LANG avec la valeur en_US.UTF-8. Lorsque nous exécutons la commande avec subprocess.run(), le nouveau processus héritera de ces variables d'environnement définies.

  • result = subprocess.run(["ls", "-l"], stdout=subprocess.PIPE, universal_newlines=True)

print(result.stdout)

Cela facilite le traitement des données dans un format de texte universel. Par exemple, subprocess.run("commande", universal_newlines=True) utilise des nouvelles lignes universelles pour la commande et la sortie du processus.

En somme, l'article nous a permis de découvrir la puissance de la méthode .run() de la bibliothèque subprocess en Python. Cette exploration nous a préparé à aborder notre prochain sujet : la méthode .Popen(), une autre fonctionnalité clé de subprocess qui offre encore plus de contrôle et de flexibilité. Restez à l'écoute pour plonger plus profondément dans le monde fascinant du scripting Python.

Révolutionnez votre Scripting avec Subprocess
Kevin Andreazza 19 juin 2023
Partager cet article
Archiver
Se connecter pour laisser un commentaire.