Appeler un programme externe en Python

Manav Narula 30 janvier 2023
  1. Utilisez la fonction os.system() pour exécuter des commandes système externes en Python
  2. Utilisez la fonction os.popen() pour exécuter des commandes système externes en Python
  3. Utilisez la fonction subprocess.Popen() pour exécuter des commandes système externes en Python
  4. Utilisez la fonction subprocess.call() pour exécuter des commandes système externes en Python
  5. Utilisez la fonction subprocess.run() pour exécuter des commandes système externes en Python
Appeler un programme externe en Python

En Python, nous avons différents modules et fonctions disponibles pour communiquer et obtenir des réponses du système d’exploitation. Python a également des méthodes qui peuvent exécuter des programmes externes.

Dans ce didacticiel, nous expliquerons comment appeler un programme externe en Python.

Utilisez la fonction os.system() pour exécuter des commandes système externes en Python

Le module os en Python peut interagir avec le système d’exploitation de l’appareil et dispose de fonctions pour exécuter des commandes shell. La fonction system() implémente une commande, qui lui est passée sous forme de chaîne, dans un sous-shell. Il renvoie l’état de sortie du shell, que le système d’exploitation renvoie après l’exécution de la commande donnée. Il permet d’exécuter plusieurs commandes à la fois et d’appeler des programmes externes, pas des commandes shell.

Par exemple,

import os

os.system("echo Hello World")

Utilisez la fonction os.popen() pour exécuter des commandes système externes en Python

Une autre fonction du module os pour exécuter des commandes de programmes externes est la fonction popen(). Cette méthode ouvre un tube lié à la commande. Elle est similaire à la fonction os.system(), mais elle fournit un objet de type fichier qui facilite les opérations d’entrée-sortie liées à la commande. Nous pouvons spécifier le mode de fichier pour le fichier et la taille de buff en tant que paramètre dans la fonction.

Par exemple,

import os

os.popen("echo Hello World")

Notez qu’il existe 4 types de fonction popen() disponibles en Python 2. La différence entre eux est avec la sortie de ces 4 fonctions.

Utilisez la fonction subprocess.Popen() pour exécuter des commandes système externes en Python

Le module subprocess est similaire au module os et dispose de fonctions et méthodes améliorées pour appeler des programmes externes. Le Popen est une classe et non une méthode. C’est un peu compliqué à utiliser en raison de divers paramètres qui doivent être spécifiés avec la commande requise. Il combine toutes les 4 fonctions os.popen() en une seule. Il exécute également le programme externe en tant que processus distinct. Le code suivant montre comment l’utiliser.

import subprocess

subprocess.Popen("echo Hello World", shell=True, stdout=subprocess.PIPE).stdout.read()

Utilisez la fonction subprocess.call() pour exécuter des commandes système externes en Python

La fonction call() est une amélioration de la fonction popen(). Cependant, contrairement à la fonction popen(), elle attend que la commande s’exécute avant de fournir le code de retour. Nous passons la commande comme argument à la fonction.

Par exemple,

import subprocess

subprocess.call("echo Hello World", shell=True)

Utilisez la fonction subprocess.run() pour exécuter des commandes système externes en Python

En Python v3.5 et supérieur, la fonction run() est plus souvent utilisée pour exécuter des commandes de programme. Il retourne un objet de processus terminé après l’exécution de la commande, passé à la fonction en tant que paramètre.

Par exemple,

import subprocess

print(subprocess.run("echo Hello World", shell=True))

Notez que le module subprocess est préféré au module os pour exécuter des commandes externes en Python.

Auteur: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Article connexe - Python Process