Я пытаюсь запустить программу и кормить программу сценарий как таковой:сделать Popen ждать первой команды, чтобы закончить затем начать следующий
subprocess.Popen(['X:\\apps\\Nuke6.1v5\\Nuke6.1.exe', '-t', 'X:\\apps\\Scripts\NUKE\\nukeExternalControl\\server.py'])
Моя проблема заключается в том, что он принимает программу через несколько секунд закончить запуск. Поэтому при запуске программы Popen запускает следующую команду и, конечно, потому что программа не работает и работает, это ошибки. Поэтому мой вопрос заключается в том, как сообщить Popen, что ждать, пока первое приложение запустит THEN, выполните следующую часть Popen .. любые участники?
UPDATE
import nukeExternalControl.client
np = subprocess.Popen(['X:\\apps\\Nuke6.1v5\\Nuke6.1.exe', '-t', 'X:\\apps\\Scripts\NUKE\\nukeExternalControl\\server.py'])
print "Starting Nuke Server"
conn = nukeExternalControl.client.NukeConnection()
nuke = conn.nuke
print "execute commands"
nuke.root().knob('first_frame').setValue(1)
nuke.root().knob('last_frame').setValue(10)
read = nuke.createNode('CheckerBoard2')
textFrame = nuke.createNode('Text')
textShotName = nuke.createNode('Text')
reformat = nuke.createNode('Reformat')
write = nuke.createNode('Write')
РЕШЕНИЕ
Так! Благодаря jdi проблема была опрокинута! Подкрепляет его, так как он долгое время оставил эту проблему со мной ... большое спасибо!
ОТВЕТ:
мне нужно использовать time.sleep()
после команды Popen
, потому что мой сервер не дожидаясь ядерной бомбы, чтобы начать, прежде чем общаться с ним.
Может быть, вы найдете здесь ответ:.. HTTP://stackoverflow.com/questions/8377391/running-subsequent-commands-within-python ... Что-то в этих строках: от sub Процесс импорта POPEN, ТРУБА р1 = Popen ([script1, вход1], стандартный вывод = ТРУБА) р2 = Popen ([Скрипт2], STDIN = p1.stdout, стандартный вывод = ТРУБА) p1.stdout.close() К сожалению , Я не могу проверить это прямо сейчас. –
Проблема с вызовом программы заключается в том, что она открывает программу в оболочке, и с этой точки она ожидает ввода пользователем. Но я не хочу давать ему пользовательский ввод. Я хочу, чтобы программа взяла список команд позже по сценарию python. Для чего нужна вторая часть Попена. – user1159817
Если вы собираетесь давать ему команды позже, почему бы вам просто не включить их в ваш вызов 'call' :-). Или есть какая-то причина, почему ** ** использовать ** Popen'? – Ben