Commande système Python - os.system(), subprocess.call()
Dans ce tutoriel, nous allons apprendre à propos de la commande système Python. Auparavant, nous avons appris à propos des nombres aléatoires en Python.
Commande système Python
En créant un programme en python, vous pourriez avoir besoin d'exécuter certaines commandes shell pour votre programme. Par exemple, si vous utilisez l'IDE Pycharm, vous avez probablement remarqué qu'il existe une option pour partager votre projet sur GitHub. Et vous savez probablement que le transfert de fichiers se fait par git, qui s'opère via la ligne de commande. Ainsi, Pycharm exécute certaines commandes shell en arrière-plan pour le faire. Cependant, dans ce tutoriel, nous allons apprendre quelques notions de base sur l'exécution de commandes shell depuis votre code python.
Fonction os.system() de 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 présente les mêmes limitations.
Cependant, si la commande génère une sortie, celle-ci 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 allons essayer 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 trouvée dans Ubuntu 16.04 où Git est déjà installé.
git version 2.14.2
returned value: 0
Notez que nous ne faisons pas imprimer la sortie de la commande de version git sur la console, elle est imprimée car la console est le flux de sortie standard ici.
Fonction subprocess.call() de Python
Dans la section précédente, nous avons vu que la fonction os.system() fonctionne bien. Mais ce n'est pas la méthode recommandée pour exécuter des commandes shell. Nous allons utiliser le module subprocess de Python pour exécuter des commandes système. Nous pouvons exécuter des commandes shell en utilisant la fonction subprocess.call(). Voir 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 la même aussi.
Fonction subprocess.check_output() de Python
Jusqu'à présent, nous avons exécuté les commandes système avec 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"
returns output as byte string
returned_output = subprocess.check_output(cmd)
using decode() function to convert byte string to string
print('Current date is:', returned_output.decode("utf-8"))
Cela 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èmes en Python. Mais il n'y a pas de limite à l'apprentissage. Si vous le souhaitez, vous pouvez en apprendre davantage sur les commandes systèmes en Python en utilisant le module subprocess dans la documentation officielle.

