我想運行的程序和飼料的程序腳本,例如:讓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,問題已被解決!道具給他,因爲他已經把這個問題困擾了我很長一段時間......非常感謝!
答:
我需要使用time.sleep()
的Popen
命令後,因爲我的服務器沒有等待覈武器,以通信之前啓動。
也許你在這裏找到答案:。HTTP:/ /stackoverflow.com/questions/8377391/running-subsequent-commands-within-python ...沿着這些線: from sub過程進口POPEN,PIPE P1 = POPEN([SCRIPT1,輸入1],標準輸出= PIPE) P2 = POPEN([SCRIPT2],標準輸入= p1.stdout,標準輸出= PIPE) p1.stdout.close() 對不起,我現在無法測試它。 – 2012-02-28 22:28:44
調用程序的問題在於它在shell中打開程序,並從此期望用戶輸入。但我不想給它用戶輸入。我希望程序在Python腳本後面接受一個命令列表。這就是Popen的第二部分。 – user1159817 2012-02-28 22:38:23
如果你以後要給它命令,爲什麼不把它們包含在你的'call'調用中:-)。或者有什麼理由爲什麼你**有**使用'Popen'? – Ben 2012-02-28 22:43:32