2015-08-18 3 views
6

Я пытаюсь запустить скрипт из питона скрипт, используя следующее:Run сценарий оболочки из питона

from subprocess import call 
call(['bash run.sh']) 

Это дает мне ошибку, но я могу успешно запускать другие команды, такие как:

call(['ls']) 
+2

возможно дубликат [Вызов внешней команды в Python] (http://stackoverflow.com/questions/89228/calling-an-external-command-in-python) – kenorb

ответ

9

Вы должны разделяющие аргументы:

call(['bash', 'run.sh']) 
call(['ls','-l']) 
+0

Есть ли способ запускать скрипты .sh в Python в Windows? – Royi

4
from subprocess import call 
import shlex 
call(shlex.split('bash run.sh')) 

Вы хотите правильно обозначить свои аргументы команды. shlex.split() сделает это за вас.

Источник: https://docs.python.org/2/library/subprocess.html#popen-constructor

Примечание shlex.split() может быть полезны при определении правильного лексемизации для аргументов, особенно в сложных случаях:

3

Когда вы звоните call() с list, он ожидает, что каждый элемент этот список соответствует аргументу командной строки. В этом случае он ищет bash run.sh как исполняемый с пробелами и все как одна строка.

Попробуйте один из них:

call("bash run.sh".split()) 
call(["bash", "run.sh"]) 
Смежные вопросы