web-dev-qa-db-fra.com

Script Python exécuter des commandes dans Terminal

J'ai lu cela quelque part il y a quelque temps mais je n'arrive pas à le trouver. J'essaie de trouver une commande qui exécutera des commandes dans le terminal, puis affichera 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

66
Ali

Il y a plusieurs moyens de le faire:

Un moyen simple consiste à utiliser le module os:

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

Des résultats plus complexes peuvent être réalisés 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]
122
Uku Loskit

Je préfère utiliser le module de sous-processus:

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 simple, par exemple de prendre la partie suivante du code

abc = a.c
call(["vim", abc])
16
Kevin Pandya
5
pyfunc

Vous devriez aussi regarder commands.getstatusoutput

Cela renvoie un tuple de longueur 2 .. Le premier correspond au nombre entier renvoyé (0 - lorsque les commandes aboutissent) Second correspond à l'ensemble de la sortie, comme indiqué 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']
2
minocha

Le os.popen () est assez simple à utiliser, mais il est déconseillé depuis Python 2.6 . Vous devriez plutôt utiliser le module subprocess.

Lire ici: lire un os.popen (commande) dans une chaîne

1
Paolo Rovelli
import os
os.system("echo 'hello world'")

Cela devrait marcher. Je ne sais pas comment imprimer la sortie dans le shell Python. 

1
Mr_pzling_Pie

Vous pouvez importer le module 'os' et l'utiliser comme ceci: 

import os
os.system('#DesiredAction')
0
Kobe Keirouz