2015-10-11 20 views
7

Chcę wykonać polecenie w terminalu ze skryptu w języku Python.Jak wykonać polecenie w terminalu ze skryptu Python?

./driver.exe bondville.dat 

To polecenie jest drukowane w terminalu, ale nie można go wykonać.

Oto moje kroki:

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

Należy wykonać polecenie, ale to jest po prostu drukuje go na terminalu. Podczas ręcznego podawania tej samej rzeczy jest ona wykonywana. Jak zrobić to ze skryptu?

+2

Użyj subprocess moduł –

+0

@PadraicCunningham Jestem nowy python, a ten moduł podproces wydaje się bardzo trudne dla mnie obsłużyć. Jak tego użyć? – Mario

+0

Czy chcesz zapisać dane wyjściowe, czy po prostu uruchomić polecenie? –

Odpowiedz

9

Komenda terminala przekazuje jej argumenty, więc wydrukowanie polecenia na terminalu jest oczekiwanym rezultatem.

Czy piszesz echo driver.exe bondville.dat i czy jest uruchomiony program driver.exe?
Jeśli nie, to musisz pozbyć się echem w ostatniej linii kodu:

os.system(command) 
+0

Dzięki pracował !! – Mario

2

można wykorzystać moduł subprocess.check_call uruchomić polecenie, nie trzeba powtórzyć, aby uruchomić polecenie:

from subprocess import check_call 

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

co jest równoznaczne z prowadzeniem ./driver.exe bondville.dat z bash.

Jeśli chciał uzyskać wyjście byłoby użyć check_outout:

from subprocess import check_output 

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

W własnego kodu są w zasadzie echa ciąg command faktycznie nie działa polecenie tj echo "./driver.exe bondville.dat" które wyjście ./driver.exe bondville.dat w swojej skorupie.

2

Spróbuj tego:

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

Odpowiedzi "Wypróbuj to" są niepomocne, ponieważ nie informują o problemie ani o tym, jak naprawić go następnym razem. –