2017-07-17 48 views
1

运行一个我有某种的过程:蟒子由

subprocess.Popen(['python2.7 script1.py')],shell=True) 
subprocess.Popen(['python2.7 script2.py')],shell=True) 
subprocess.Popen(['python2.7 script3.py')],shell=True) 
subprocess.Popen(['python2.7 script4.py')],shell=True) 

我想每个人开始后前面的过程完全结束。 我的意思是

subprocess.Popen(['python2.7 script2.py')],shell=True) 

开始

subprocess.Popen(['python2.7 script1.py')],shell=True) 

完全地结束后,和其他人一样。这是因为以前的脚本已经输出了它被下一个脚本使用的输出。 感谢

回答

3

您可以简单地使用wait()为每一个来完成,像这样:

sp1 = subprocess.Popen(['python2.7 script1.py')],shell=True) 
sp1.wait() 

sp2 = subprocess.Popen(['python2.7 script2.py')],shell=True) 
sp2.wait() 

sp3 = subprocess.Popen(['python2.7 script3.py')],shell=True) 
sp3.wait() 

sp4 = subprocess.Popen(['python2.7 script4.py')],shell=True) 
sp4.wait() 

或者更短的方式:

subprocess.Popen(['python2.7 script1.py')],shell=True).wait() 
subprocess.Popen(['python2.7 script2.py')],shell=True).wait() 
subprocess.Popen(['python2.7 script3.py')],shell=True).wait() 
subprocess.Popen(['python2.7 script4.py')],shell=True).wait() 
2

使用subprocess.call

运行命令描述参数。等待命令完成,然后返回returncode属性。

在您的例子:

subprocess.call(['python2.7 script1.py')],shell=True) 
subprocess.call(['python2.7 script2.py')],shell=True) 
subprocess.call(['python2.7 script3.py')],shell=True) 
subprocess.call(['python2.7 script4.py')],shell=True) 
+0

感谢您的编辑,奥弗! –

+0

我的荣幸.... –