2010-09-16 8 views
45

Je l'ai lu quelque part il y a quelque temps mais je n'arrive pas à le trouver. J'essaye de trouver une commande qui exécutera des commandes dans le terminal et puis produira le résultat.Python Script exécuter des commandes dans le terminal

Par exemple: le script sera:

command 'ls -l' 

Il sera le résultat de l'exécution qui commande dans le terminal

Répondre

89

Il y a plusieurs façons de le faire:

Une façon simple est d'utiliser le module os:

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

choses plus complexes peuvent être obtenus avec le module de sous-processus: pour exemple:

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

Je ne veux pas vous downvote mais. Vous devriez utiliser un sous-processus pour tout. C'est beaucoup plus sûr. subprocess.call() vous obtiendra une belle interface afin de remplacer le formulaire d'appel simple. –

+0

Merci pour cette réponse mate. J'utiliserai python pour ma première application sur le bureau d'Ubuntu, cela m'aidera vraiment. – LinuxBill

+0

Comment 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 obtenir la réponse complète. –

1

Vous devriez également examiner commands.getstatusoutput

Ceci renvoie un tuple de longueur 2 .. La première est le nombre entier de retour (0 - lorsque les commandes est réussie) seconde est la sortie ensemble comme on le verra 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'] 
1

Le os.popen() est assez simple à utiliser, mais il a été dépréciées depuis Python 2.6. Vous devez utiliser le sous-processus sous-processus à la place.

Lire ici: reading a os.popen(command) into a string

-5

Dans l'interface graphique de bureau, (certains d'entre vous ne l'utilisez pas), vous pouvez Leafpad un raccourci sur le bureau et il a une commande pour ouvrir le fichier deignated. Si vous le copiez et le collez dans votre interpréteur python, cela devrait fonctionner. (Je ne suis pas tout à fait sûr que cela fonctionnera, mais pourquoi ne pas essayer!) Désolé pour toutes les fautes d'orthographe ... Im seulement 11. Cette information n'est donc pas encore disponible! c'est juste que je suis paresseux en faisant un nom! rappelez-vous, im seulement 11!

+0

lol whattttttttt – mikebertiean

+0

lmfao qu'est-ce que c'est – Gianlucca

8

Je préfère l'utilisation du module de sous-processus:

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

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

abc = a.c 
call(["vim", abc]) 
0
import os 
os.system("echo 'hello world'") 

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

Questions connexes