2015-10-11 13 views
7

Voglio eseguire un comando in terminale da uno script Python.Come eseguire un comando nel terminale da uno script Python?

./driver.exe bondville.dat 

Questo comando viene stampato nel terminale, ma non riesce ad eseguirlo.

Qui sono i miei passi:

echo = "echo" 
command="./driver.exe"+" "+"bondville.dat" 
os.system(echo + " " + command) 

Dovrebbe eseguire il comando, ma è solo la stampa su terminale. Quando si alimenta la stessa cosa manualmente è in esecuzione. Come faccio a farlo da una sceneggiatura?

+2

Utilizzare il sottoprocesso modulo di –

+0

@PadraicCunningham Sono nuovo di python, e questo modulo sottoprocesso sembra molto difficile per me da gestire. Come usare questo? – Mario

+0

vuoi memorizzare l'output o semplicemente eseguire il comando? –

risposta

9

Il comando di terminale echaes gli argomenti, in modo da stampare il comando per il terminale è il risultato previsto.

Si sta digitando echo driver.exe bondville.dat ed è in esecuzione il programma driver.exe?
Se no, allora avete bisogno di sbarazzarsi del eco nell'ultima riga del codice:

os.system(command) 
+0

Grazie lavorato !! – Mario

2

È possibile utilizzare il modulo subprocess.check_call per eseguire il comando, non è necessario fare eco per eseguire il comando:

from subprocess import check_call 

check_call(["./driver.exe", "bondville.dat"]) 

che equivale a correre ./driver.exe bondville.dat da bash.

Se si voleva ottenere l'output si usa check_outout:

from subprocess import check_output 

out = check_output(["./driver.exe", "bondville.dat"]) 

nel proprio codice si sono fondamentalmente riecheggiando la stringa command in realtà non esegue il comando cioè echo "./driver.exe bondville.dat" che sarebbe uscita ./driver.exe bondville.dat nella shell.

2

Prova questa:

import subprocess 
subprocess.call("./driver.exe bondville.dat") 
+1

"Prova questo" le risposte non sono utili poiché non dicono quale fosse il problema o come risolverlo la volta successiva. –