我希望能够在python中调用两个(或更多)命令,但我想确保第一个在第二个启动之前完成。这可能与subprocess
有关吗?例如:
subprocess.call("script1 input1 > out", shell=True)
当该命令完成时:
subprocess.call("script2 out>out2", shell=True)
还是有更好的方法吗?
答案 0 :(得分:6)
在命令完成之前调用subprocess.call
块。来自documentation:
等待命令完成,然后返回
returncode
属性。
同样等待完成的选项是subprocess.check_call
。 call
和check_call
之间的区别在于后者会引发非零返回码的异常,而前者会返回所有案例的返回码。
答案 1 :(得分:1)
答案 2 :(得分:0)
您是否尝试重现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]