Я пытаюсь запустить .sh-скрипт из Python 3.3 в Ubuntu 13.10. Сценарий должен отключить компьютер. Я уже обозначил сценарий sh как исполняемый через терминал. Я попытался запустить сценарий sh через: os.system («script.sh»), subprocess.Popen («Script.sh») и subprocess.call ([script.sh]). Они продолжают возвращать ошибку формата OSError Exec. Любая помощь будет очень полезна!Как запустить .sh-файл из программы python Ubuntu
0
A
ответ
1
Я предполагаю, что script.sh не находится в вашем PATH, а в вашем текущем рабочем каталоге. По умолчанию os.system и подпроцесс просматривают ваш путь для запрошенного исполняемого файла. Таким образом, чтобы выполнить что-то в текущем рабочем каталоге, необходимо указать исполняемый файл, как это:
subprocess.call("./script.sh")
./
просто говорит о том, что исполняемый файл, который должен быть выполнен в текущем рабочем каталоге.
Вы добавили shebang в скрипт? В противном случае ОС пытается запустить его как двоичный исполняемый файл. – Kritzefitz
Эй. Что вы подразумеваете под «shebang»? Я могу запустить скрипт из терминала, но не из python. –
В сценариях, подобных Unix-подобным системам (исполняемые файлы, которые не являются двоичным кодом), необходимо иметь информацию о том, как они должны выполняться. Таким образом, первая строка сценариев .sh должна быть так называемой shebang. Shebang имеет форму «#!/Your/script/interpreter» (без кавычек). Для sh скриптов/вашего/скрипта/интерпретатора is/bin/sh. Для подробного описания shebangs смотрите https: // ru. wikipedia.org/wiki/Shebang_%28Unix%29. – Kritzefitz