我希望能夠在python中調用兩個(或更多)命令,但我想確保第一個命令在第二個啓動之前完成。這可能與subprocess
?例如:在python中運行後續命令
subprocess.call("script1 input1 > out", shell=True)
,並當命令完成:
subprocess.call("script2 out>out2", shell=True)
,或是否有更好的辦法?
我希望能夠在python中調用兩個(或更多)命令,但我想確保第一個命令在第二個啓動之前完成。這可能與subprocess
?例如:在python中運行後續命令
subprocess.call("script1 input1 > out", shell=True)
,並當命令完成:
subprocess.call("script2 out>out2", shell=True)
,或是否有更好的辦法?
調用subprocess.call
會阻塞,直到命令完成。從documentation:
等待命令完成,然後返回
returncode
屬性。
一個類似的選項,也等待完成subprocess.check_call
。 call
和check_call
之間的區別在於後者引發了非零返回碼的例外,而前者返回所有情況下的返回碼。
你想重現一個shell管道嗎?
如果是這樣,那麼,適應example from the python docs,你的例子可能會成爲:
from subprocess import Popen, PIPE
p1 = Popen([script1, input1], stdout=PIPE)
p2 = Popen([script2], stdin=p1.stdout, stdout=PIPE)
p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
output = p2.communicate()[0]
出色答卷。 'check_call'雖然獎勵點。 –
@BrianCain謝謝你的建議。我已更新回答,以包含有關'subprocess.check_call'的信息。 –