Commande système Python – os.system(), subprocess.call()

Dans ce tutoriel, nous allons apprendre sur la commande système Python. Auparavant, nous avons appris sur les Nombre Aléatoire en Python.

Commande Système Python

Lorsque vous créez un programme en Python, vous pouvez avoir besoin d’exécuter certaines commandes shell pour votre programme. Par exemple, si vous utilisez l’IDE Pycharm, vous pouvez remarquer qu’il y a une option pour partager votre projet sur github. Et vous savez probablement que le transfert de fichiers est effectué par git, qui est opéré à l’aide de la ligne de commande. Ainsi, Pycharm exécute quelques commandes shell en arrière-plan pour le faire. Cependant, dans ce tutoriel, nous allons apprendre quelques bases sur l’exécution de commandes shell à partir de votre code Python.

Fonction os.system() en Python

Nous pouvons exécuter une commande système en utilisant la fonction os.system(). Selon le document officiel, il a été dit que

Cela est implémenté en appelant la fonction système Standard C, et a les mêmes limitations.

Cependant, si la commande génère une quelconque sortie, elle est envoyée au flux de sortie standard de l’interpréteur. L’utilisation de cette commande n’est pas recommandée. Dans le code suivant, nous essaierons de connaître la version de git en utilisant la commande système git --version.

import os

cmd = "git --version"

returned_value = os.system(cmd)  # returns the exit code in unix
print('returned value:', returned_value)

La sortie suivante a été trouvée dans Ubuntu 16.04 où git est déjà installé.

git version 2.14.2
returned value: 0

Remarquez que nous n’affichons pas la sortie de la commande de version de git dans la console, elle est imprimée car la console est le flux de sortie standard ici.

Fonction subprocess.call() Python

Dans la section précédente, nous avons vu que la fonction os.system() fonctionne correctement. Mais ce n’est pas une façon recommandée d’exécuter des commandes shell. Nous utiliserons le module Python subprocess pour exécuter des commandes système. Nous pouvons exécuter des commandes shell en utilisant la fonction subprocess.call(). Voyez le code suivant qui est équivalent au code précédent.

import subprocess

cmd = "git --version"

returned_value = subprocess.call(cmd, shell=True)  # returns the exit code in unix
print('returned value:', returned_value)

Et la sortie sera également la même.

Fonction subprocess.check_output() Python

Jusqu’à présent, nous avons exécuté les commandes système à l’aide de python. Mais nous n’avons pas pu manipuler la sortie produite par ces commandes. En utilisant la fonction subprocess.check_output(), nous pouvons stocker la sortie dans une variable.

import subprocess

cmd = "date"

# retourne la sortie sous forme de chaîne d'octets
returned_output = subprocess.check_output(cmd)

# en utilisant la fonction decode() pour convertir la chaîne d'octets en chaîne
print('Current date is:', returned_output.decode("utf-8"))

Il produira une sortie comme suit

Current date is: Thu Oct  5 16:31:41 IST 2017

Donc, dans les sections ci-dessus, nous avons discuté des idées de base sur l’exécution de commandes système python. Mais il n’y a pas de limite à l’apprentissage. Si vous le souhaitez, vous pouvez en apprendre davantage sur la commande système Python en utilisant le module subprocess à partir de la documentation officielle.

Source:
https://www.digitalocean.com/community/tutorials/python-system-command-os-subprocess-call