Comment exécuter une commande ou un programme externe dans Python

Comment exécuter une commande ou un programme externe dans Python

Le python sous-processus Le module permet d'approuver de nouveaux processus et d'exécuter des commandes ou des scripts externes à partir des scripts Python. Vous pouvez installer la dernière version de Python en utilisant ces tutoriels. De plus, il existe un certain nombre d'IDE disponibles pour Python. Comme installer pycharm python ide sur les systèmes Ubuntu.

Python scrpt pour appeler la commande système

Créons votre premier programme pour répertorier tous les fichiers disponibles dans le répertoire actuel. Vous pouvez ajouter n'importe quel nombre de paramètres de ligne de commande avec le comm (,) séparé.

#!/ usr / bin / python3 Importer le sous-processus de sous-processus.appel (["ls", "-l"])
1234#!/ usr / bin / python3 Importer sub-processSubprocess.appel (["ls", "-l"])

Où-

  • L'instruction d'importation est utilisée pour charger le module de sous-processus Formulaire La bibliothèque standard Python
  • L'appel est la fonction du module de sous-processus, est utilisé pour exécuter des commandes externes

Python Print sans nouvelle ligne

Les commandes Python se terminent avec une nouvelle sortie de ligne «\ n», que vous pouvez écraser en utilisant end = ”» signifie que la sortie de commande suivante sera sur la même ligne. Voir l'exemple ci-dessous.

#!/ usr / bin / python3 Importer le sous-processus Impression ("\ ntoday is",) Sous-processus.Appelez (["Date", "+% D"])
123456#!/ usr / bin / python3 Importer le sous-processus Impression ("\ ntoday est", end = "") Sous-processus.Appelez (["Date", "+% D"])

Résultat:

Aujourd'hui est 01/11/18 

Exemple Python avec extension de la coquille

Le sous-processus par défaut.L'appel n'élargit pas les jilèges de shell ou ne réalise pas la substitution de commandement. Cela peut être remplacé en passant la vraie valeur pour l'argument de Shell. N'oubliez pas que l'utilisation de Shell = True pourrait être un problème de sécurité pour votre système en exécutant la commande nuisible.

#!/ usr / bin / python3 Importer Sub-Process # Commande d'exécution sans sous-processus d'extension.Appeler ([«echo», «bienvenue $ user»]) # Exécution d'une commande avec sous-processus d'extension de shell.Appelez («Echo Welcome $ user», shell = true)
123456789#!/ usr / bin / python3 Importer le sous-processus # Commande d'exécution sans shell expansionubprocess.Appelez ([«echo», «bienvenue $ user»]) # Exécution d'une commande avec des extensions de shell.Appelez («Echo Welcome $ user», shell = true)

Résultat:

Bienvenue $ Utilisateur Root de bienvenue 

Vous pouvez voir dans la sortie ci-dessus que la première commande imprime un nom de variable car il a été exécuté sans expansion de shell. La deuxième commande exécutée avec l'extension de shell obtient la valeur de la variable d'environnement utilisateur. En outre, vous pouvez voir que la commande entière est maintenant passée comme une chaîne et non comme une liste de chaînes.

Autres exemples de python utiles

Vous pouvez rendre vos scripts plus lisibles et beau en stockant une longue commande dans une variable, puis en exécutant.

#!/ usr / bin / python3 Importer sous-processus cmd = "grep -re 'fatal' / var / log /> Recherches.Txt "Sous-processus.appel (cmd, shell = true)
123456#!/ usr / bin / python3 Importer sous-processus cmd = "grep -re 'fatal' / var / log /> Recherches.Txt "Sous-processus.appel (cmd, shell = true)

Vous pouvez également stocker la sortie de n'importe quelle commande à une variable à l'aide de sous-processus.getOutput. Cela stockera également si un message d'erreur est généré.

#!/ usr / bin / python3 Import Sub-Process Print ("La sortie de la commande 'PWD' est:", Flush = true) outprocess = sub-processus.GetOutput ('PWD') Print (sortie)
12345678#!/ usr / bin / python3 Import Sub-Process Print ("La sortie de la commande 'PWD' est:", Flush = true) outprocess = sub-processus.GetOutput ('PWD') Print (sortie)

Résultat:

La sortie de la commande 'pwd' est: / root / python / scripts