GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter une commande Shell avec Python

Python est l'un des langages de programmation les plus populaires. Si vous utilisez Linux, son apprentissage vous aidera à automatiser les workflows et les scripts.

L'utilité de Python vient de sa facilité d'utilisation et de sa bibliothèque standard. Avec lui, vous pouvez exécuter avec succès des commandes shell, et c'est le sujet de notre tutoriel d'aujourd'hui.

Dans la plupart des cas, vous avez peut-être utilisé un fichier bash ou batch pour exécuter vos commandes, mais vous pourrez également le faire en Python. Nous allons vous guider sur la façon d'exécuter la commande shell avec Python.

Exécuter les commandes Shell avec Python

1. Module de système d'exploitation

L'un des moyens les plus simples et les plus sûrs d'exécuter la commande shell via Python consiste à utiliser os.system().

Enregistrons notre fichier Python sous usingos.py .

Vous trouverez ci-dessous le code dont vous avez besoin pour l'utiliser dans vos données.

import os
os.system('ls')

Dans le fichier Python, nous importons d'abord le module os, puis nous appelons la méthode système() pour transmettre la commande que vous souhaitez exécuter. Comme vous pouvez le voir, nous y avons exécuté la commande "ls". Si vous exécutez le fichier python, vous obtiendrez la sortie suivante.

python usingos.py

Cependant, l'utilisation du module os est très limitée. Tout d'abord, vous ne pourrez pas enregistrer la sortie dans une variable.

Pour enregistrer la sortie, vous devez utiliser une fonction différente avec le module os. C'est popen(). Il ouvre simplement un tuyau vers et depuis une ligne de commande. Ce faisant, le flux Python est accessible et, par conséquent, les valeurs peuvent être stockées dans une variable.

Enregistrons notre nouveau script Python sous le nom savingvalue.py

À l'intérieur, vous devez taper le code suivant.

import os
stream = os.popen('eThe value is now returned')
output = stream.read()
print (output)

2. Module de sous-processus

Enfin, nous examinerons le module de sous-processus. Si vous envisagez sérieusement d'exécuter des commandes shell à l'aide de Python, vous devez utiliser la méthode subprocess. Vous avez besoin de votre version Python 3.5 ou supérieure pour utiliser le module subprocess.

Mais pourquoi devriez-vous le faire ? C'est parce que le sous-processus est livré avec d'excellentes fonctionnalités qui fonctionnent bien lorsque vous travaillez avec des commandes shell en Python. Par exemple, vous pourrez stocker les résultats dans des variables et également démarrer un nouveau processus sans essayer de réinventer la roue.

Prenons un exemple pour mieux comprendre. Nous nommons notre fichier pour cet exemple comme subproc.py.

À l'intérieur, vous devez utiliser le code suivant.

import subprocess
list_file_names = subprocess.run(['ls'])
print ("Here are the files %d" %list_file_names.returncode)

La première ligne du code importe le module de sous-processus. Une fois cela fait, nous créons maintenant une nouvelle variable nommée "list_file_names" puis utilisons la fonction subprocess.run(). Il prend l'entrée dans une liste. Comme vous pouvez le voir, nous avons inséré une commande Linux, ls, qui répertorie les fichiers et les dossiers.

Enfin, nous imprimons la variable avec un code de retour.

Pour passer un argument à la commande, vous devez passer l'argument comme un autre élément de la liste. Donc, si vous voulez passer l'argument "-l" à "ls", alors la liste sera comme ci-dessous :

["ls","-l"]

Conclusion

Cela nous amène à la fin de notre tutoriel sur la façon d'exécuter la commande Shell avec Python en utilisant le os et sous-processus modules. Alors que le os module est plus une solution simple pour exécuter un shell commande, le sous-processus module a des fonctionnalités plus puissantes pour déclencher de nouveaux processus et extraire la sortie. De quelles autres manières utilisez-vous Python ? Partagez vos astuces avec nos lecteurs dans les commentaires ci-dessous.


Linux
  1. Comment exécuter une commande dans Shell sans l'enregistrer dans l'historique ? [Astuces Linux]

  2. Exécuter la commande Nohup avec entrée ?

  3. Comment dockeriser les applications Python avec Miniconda

  4. Comment utiliser l'exportation avec Python sous Linux

  5. Comment stocker le résultat d'une commande shell exécutée dans une variable en python ?

Comment surveiller le système Linux avec la commande Glances

Comment créer une sauvegarde avec la commande tar sous Linux

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment exécuter des commandes Shell via un serveur HTTP

Comment exécuter une commande dans un script shell ?

Comment installer Python 2.7 sur CentOS 7.1 ou 6.7 avec Anaconda