2015-09-14 3 views
0

Я пытаюсь запустить следующий код в Python, который вызывает файл сценария Bash и сохраняет его вывод в переменную. Я пытаюсь использовать subprocess.check_output, но он вызывает ошибку в действии «Нет такого файла или каталога». subprocess.call тоже не работает. Вот немного моего кода.Сценарий вызова bash из python и возвращаемой переменной

answer = subprocess.check_output(['/directory/bashfile.bash -c /directory/file -i input -o output']) 
print answer 

-c-i и -o лишь аргументы сценария bashfile.

+0

можете ли вы точно объяснить, что «не работает». что происходит, когда вы запускаете свой код? – DorElias

ответ

1

Проблема в том, что вы передаете всю командную строку, а не разделяете их на args. Вам необходимо либо передать его в качестве команды оболочки:

answer = subprocess.check_output('/directory/bashfile.bash -c /directory/file -i input -o output', 
           shell=True) 
print answer 

Или вам нужно разметить сам:

answer = subprocess.check_output(['/directory/bashfile.bash', 
            '-c', '/directory/file', 
            '-i', 'input', 
            '-o', 'output']) 
print answer 

Для получения дополнительной информации о подпроцессе см the docs (питон 3 версии here)! В частности, вы захотите прочитать раздел о "Frequently used arguments"

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