2015-10-11 4 views
7

Я хочу выполнить команду в терминале из сценария Python.Как выполнить команду в терминале из сценария Python?

./driver.exe bondville.dat 

Эта команда печатается на терминале, но не выполняется.

Вот мои шаги:

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

Он должен выполнить команду, но это просто напечатать его на терминале. При кормлении того же самого вручную оно выполняется. Как это сделать из сценария?

+2

Используйте подпроцесс модуль –

+0

@PadraicCunningham Я новичок в Python, и этот подпроцесс модуль кажется мне очень трудно справиться. Как это использовать? – Mario

+0

Вы хотите сохранить результат или просто запустить команду? –

ответ

9

Команда терминала echoэхо-сигналы его аргументы, поэтому вывод команды на терминал является ожидаемым результатом.

Вы печатаете echo driver.exe bondville.dat и используете ли вы свою программу driver.exe?
Если нет, то вам необходимо избавиться от эха в последней строке кода:

os.system(command) 
+0

Спасибо! работал !! – Mario

2

Вы можете использовать subprocess.check_call модуль для запуска команды, вам не нужно повторить, чтобы запустить команда:

from subprocess import check_call 

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

Что эквивалентно запуск ./driver.exe bondville.dat от Баша.

Если вы хотите, чтобы получить выход вы будете использовать check_outout:

from subprocess import check_output 

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

В своем коде вы в основном повторяющий строку command фактически не работает команда, которая echo "./driver.exe bondville.dat" т.е. будет выводить ./driver.exe bondville.dat в вашей оболочке.

2

Попробуйте это:

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

«Попробуй» ответы бесполезны, так как они не говорят, в чем проблема или как ее исправить в следующий раз. –