Exécuter des commandes Shell à partir de scripts Python 3

linux-windows-shell

Le module os est également l’endroit où nous exécutons des commandes shell à partir de scripts Python. Ce concept est étroitement lié à d’autres, tels que les flux (streams).
Deux fonctions du module os permettent aux scripts d’exécuter n’importe quelle commande du système d’exploitation que vous pouvez taper dans une fenêtre de console:

  • os.system: Exécute une commande shell à partir d’un script Python
  • os.popen: Exécute une commande shell et se connecte à ses flux d’entrée ou de sortie

Qu’est-ce qu’une commande shell?

Pour comprendre la portée des appels énumérés dans cet article, nous devons d’abord définir quelques termes. Dans ce texte, le terme «shell» désigne le système qui lit et exécute les chaînes de caractères (commande shell) saisies dans la ligne de commande de votre système d’exploitation.

Par exemple, sous Windows, vous pouvez démarrer une fenêtre de ligne de commandes MS-DOS (alias “Invite de commandes”) et y taper des commandes DOS, telles que dir pour obtenir une liste de répertoires, noms des programmes que vous souhaitez exécuter, et ainsi de suite.

DOS est le shell du système d’exploiatation Windows, et les commandes telles que dir et type sont des commandes shell. Sous Linux et Mac OS X, vous pouvez démarrer une nouvelle session shell en ouvrant une fenêtre xterm ou terminal et en tapant des commandes shell là aussi – ls pour lister les répertoires, cat pour concaténer des fichiers, etc.

Une variété de shells est disponible sur Unix (par exemple, csh, ksh), mais tous lisent et exécutent des lignes de commande. Voici deux commandes shell tapées et exécutées dans une fenêtre de console MS-DOS sous Windows:

C:\>dir
 Volume in drive C has no label.
 Volume Serial Number is 4000-2000

 Directory of C:\

12/27/2013  01:07 AM             1,024 .rnd
12/29/2017  12:09 AM    <DIR>          ActiveTcl
07/14/2018  10:57 PM         1,043,399 bdlog.txt
03/25/2018  03:47 PM    <DIR>          cygwin64
01/26/2014  12:23 AM               107 dfinstall.log
06/17/2018  12:42 AM    <DIR>          eclipse Java
08/05/2015  11:10 AM               383 ftconfig.ini
02/22/2017  12:45 PM             2,466 GingerSetup.log
02/22/2017  12:45 PM            15,148 GingerSetupHelper.log
05/16/2017  05:00 PM    <DIR>          Intel
01/05/2018  09:26 PM    <DIR>          Irvine
12/13/2017  09:59 PM    <DIR>          masm32
07/14/2009  04:20 AM    <DIR>          PerfLogs

....... texte supprimé ..................



C:\>type ftconfig.ini
[SecurityScan]
Rank=400
FirstInstallWait=14400


....... texte supprimé ..................

C:\>

Exécuter des commandes Shell

Rien de tout cela n’est directement lié à Python, bien sûr (malgré le fait que les scripts de ligne de commande Python sont parfois appelés “outils de shell”).

Mais comme les appels système popen et ceux du module os permettent aux scripts Python d’exécuter toute sorte de commandes que le shell système sous-jacent comprend, nos scripts peuvent utiliser tous les outils de la ligne de commande disponibles sur l’ordinateur, qu’ils soient codés en Python ou non.

Par exemple, voici un code Python qui exécute les deux commandes shell DOS tapées à l’invite du shell illustrée précédemment:

>>> import os

>>> os.chdir("c:\\")

>>> os.system("dir")
 Volume in drive C has no label.
 Volume Serial Number is 4000-2000

 Directory of c:\

12/27/2013  01:07 AM             1,024 .rnd
12/29/2017  12:09 AM    <DIR>          ActiveTcl
07/14/2018  10:57 PM         1,043,399 bdlog.txt
03/25/2018  03:47 PM    <DIR>          cygwin64
01/26/2014  12:23 AM               107 dfinstall.log
06/17/2018  12:42 AM    <DIR>          eclipse Java
08/05/2015  11:10 AM               383 ftconfig.ini
02/22/2017  12:45 PM             2,466 GingerSetup.log
02/22/2017  12:45 PM            15,148 GingerSetupHelper.log
05/16/2017  05:00 PM    <DIR>          Intel
01/05/2018  09:26 PM    <DIR>          Irvine
12/13/2017  09:59 PM    <DIR>          masm32
07/14/2009  04:20 AM    <DIR>          PerfLogs

....... texte supprimé ..................

0

>>> 

>>> os.system("type ftconfig.ini")
[SecurityScan]
Rank=400
FirstInstallWait=14400


....... texte supprimé ..................


0
>>> 

Les zéros dans les deux commandes ici sont juste les valeurs de retour de l’appel système lui-même (son statut de sortie, zéro signifie généralement le succès). L’appel os.system peut être utilisé pour exécuter n’importe quelle commande que nous pourrions taper à l’invite du shell. La sortie de la commande apparaît normalement dans le flux de sortie standard de la session Python ou du programme.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here