2015-05-15 3 views
0

Я работаю над скриптом Python, который управляет программой C cli через модуль Pexpect. Скрипт и программа размещаются в разных каталогах. Я мог бы просто указать абсолютный путь к программе, однако есть проблема:Запустите программу в другом каталоге через Pexpect

Программа сильно зависит от каталога, в котором вы его запускаете: скажем, если вы запустите его с помощью bash, вы должны быть в точном dir он помещен в, иначе он потерпит неудачу.

Как я понимаю, по умолчанию pexpect.spawn() видит, что он запускается из «текущего каталога» для эмулируемой оболочки.

Что я могу сделать, чтобы заставить его работать, кроме как скрестить сценарий и программу?

Кстати, Python является 2.7.6, pexpect == 3,3, Баш оболочки

+1

согласно [Docs] (http://pexpect.sourceforge.net/pexpect.html), 'spawn' имеет' cwd' параметр. – tdelaney

ответ

2

pexpect.spawn() принимает cwd аргумент, вы могли бы установить, что в нужный каталог?

pexpect.spawn(<cmd>, cwd="<path>") 

может дать вам то, что вы хотите

+0

Это похоже. Однако не удается найти его в документах. Спасибо! – Egor

+0

@egor Вы можете увидеть его на странице https://pexpect.readthedocs.org/ru/latest/api/pexpect.html?highlight=spawn#pexpect.spawn –

+0

У меня есть другой вопрос. Ваше предложение работает нормально, но не всегда. У меня проблемы с созданием собственных кли-программ из разных каталогов. Я получаю 'pexpect.ExceptionPexpect: команда не была найдена или не была выполнена:./Helloworld.' при запуске из другого каталога без учета параметров cwd – Egor

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