2015-11-28 2 views
0

Я пытаюсь:Не удается запустить скрипт linux .sh с подпроцессом python?

import subprocess 
subprocess.call(["file.sh"]) 

Но я получаю:

Traceback (most recent call last): 
    File "project.py", line 85, in <module> 
    subprocess.call(["file.sh"]) 
    File "/usr/local/lib/python2.7/subprocess.py", line 522, in call 
    return Popen(*popenargs, **kwargs).wait() 
    File "/usr/local/lib/python2.7/subprocess.py", line 710, in __init__ 
    errread, errwrite) 
    File "/usr/local/lib/python2.7/subprocess.py", line 1335, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 

Однако, когда я пытаюсь запустить скрипт из командной строки bash file.sh это работает. Поэтому я смущен, почему это не работает?

Я не привержен использованию подпроцесса, поэтому, если есть другие варианты, пожалуйста, дайте мне знать.

+0

ли 'file.sh' (в отличие от' Баш file.sh') работать из командной строки? Нет? Почему вы ожидаете, что 'subprocess.call ([" file.sh "])' будет работать? –

+0

Я просто попытался добавить '([" bash file.sh "])' и точно такой же результат. – RoryGillum

ответ

2

call Функция пакета subprocess запускает команду, указанную в arg, как список строк (для упрощения).

Чтобы позвонить файл вы положили в свой сценарий:

import subprocess 
subprocess.call(["sh", "file.sh"]) 
+0

Получил это. Благодарю. – RoryGillum

+0

Является ли скрипт file.sh в том же каталоге, что и ваш скрипт на python? Кроме того, вы должны заменить файл «file.sh» на путь к файлу. Без проблем. – Philou

Смежные вопросы