を開始し、その後終了する最初のコマンドを待つ作る:私の問題は、それがプログラムに数秒かかることであるpopenのは、私がプログラムを実行し、そのようにプログラムにスクリプトを供給しようとしている次の
subprocess.Popen(['X:\\apps\\Nuke6.1v5\\Nuke6.1.exe', '-t', 'X:\\apps\\Scripts\NUKE\\nukeExternalControl\\server.py'])
打ち上げを完了する。そのプログラムを起動する間、Popenは次のコマンドを実行します。もちろん、プログラムが起動しておらず、実行中にエラーが発生しているためです。だから私の質問は、Popenに最初のアプリケーションが実行されるのを待つように指示する方法です。次に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')
SOLUTION
そう! jdiのおかげで、問題は消えてしまった!彼がこの問題をかなりの間私と一緒に抱きしめてしまったので、彼に小道具...ありがとう!
ANSWER:
私は私のサーバーがそれに通信する前に、開始するには核兵器を待っていなかったためPopen
コマンドの後time.sleep()
を使用する必要がありました。
たぶん、あなたはここで答えを見つける:。。のhttp:/を/stackoverflow.com/questions/8377391/running-subsequent-commands-within-python ...これらの行に沿ったもの: サブプロセス輸入popenの、PIPE P1 = popenの([SCRIPT1、INPUT1]、STDOUT = PIPE) P2 = popenの([スクリプト2]、STDIN = p1.stdout、STDOUT = PIPE) p1.stdout.close()該当 、私は今それをテストすることはできません。 –
プログラムを呼び出す際の問題は、シェルでプログラムを開き、そのポイントからユーザーの入力が必要になることです。しかし、私はそれにユーザーの入力を与えたくありません。私はプログラムが後でpythonスクリプトのコマンドのリストを取るしたい。それはPopenの第二の部分のためです。 – user1159817
あなたがコマンドを後で与えるつもりなら、どうしても 'call'コールにそれらを含めないでください:-)。それとも、ポポンを使う**の理由がありますか? – Ben