129 votes

Python script exécuter des commandes dans le Terminal

J'ai lu ceci quelque part il y a un certain temps mais je n'arrive pas à le retrouver. J'essaie de trouver une commande qui exécute des commandes dans le terminal et qui affiche ensuite le résultat.

Par exemple : le script sera :

command 'ls -l'

Il sortira le résultat de l'exécution de cette commande dans le terminal

0 votes

Je suppose que par "terminal" vous voulez dire "comme dans la ligne de commande", cf. superuser.com/questions/144666/

230voto

Uku Loskit Points 15705

Il existe plusieurs façons de procéder :

Un moyen simple consiste à utiliser le module os :

import os
os.system("ls -l")

Des choses plus complexes peuvent être réalisées avec le module de sous-processus : par exemple :

import subprocess
test = subprocess.Popen(["ping","-W","2","-c", "1", "192.168.1.70"], stdout=subprocess.PIPE)
output = test.communicate()[0]

53 votes

Je ne veux pas te descendre mais. Tu devrais utiliser subprocess pour tout. C'est beaucoup plus sûr. subprocess.call() vous donnera une belle interface pour remplacer le simple formulaire d'appel.

0 votes

Merci pour cette réponse, mon pote. Je vais utiliser python pour ma première application sur le bureau Ubuntu, cela va vraiment m'aider.

2 votes

Comment puis-je obtenir la réponse complète d'une commande, os.system("nslookup gmail.com") ne renvoie que la dernière ligne 0 mais je veux avoir la réponse complète.

48voto

Kevin Pandya Points 318

Je préfère l'utilisation du module subprocess :

from subprocess import call
call(["ls", "-l"])

La raison est que si vous voulez passer une variable dans le script cela donne un moyen très facile par exemple prenez la partie suivante du code

abc = a.c
call(["vim", abc])

2 votes

Cela a bien fonctionné pour moi en ouvrant une image avec des paramètres supplémentaires. call(["eog", "1breeproposal.png", "-f"])

8voto

pyfunc Points 31088

7voto

Mr_pzling_Pie Points 90
import os
os.system("echo 'hello world'")

Cela devrait fonctionner. Je ne sais pas comment imprimer la sortie dans le Shell python.

5voto

minocha Points 75

Vous devriez aussi regarder dans commands.getstatusoutput

Cette commande renvoie un tuple de longueur 2 . Le premier est l'entier de retour ( 0 - quand la commande est réussie ) Le second est la sortie complète qui sera affichée dans le terminal.

Pour ls

    import commands
    s=commands.getstatusoutput('ls')
    print s
    >> (0, 'file_1\nfile_2\nfile_3')
    s[1].split("\n")
    >> ['file_1', 'file_2', 'file_3']

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X