如何保持for循环等待进程结束?

时间:2017-10-22 18:24:06

标签: python

我编写了一个简短的Python 3脚本来多次运行批处理文件(Ctemp.cmd)。脚本是这样的:

for i in range (START,STOP+1,STEP):
    os.startfile('Ctemp.cmd')

上面的代码(几乎)同时运行文件。但是,我希望它等待,直到批处理文件已经完成运行,然后再次运行它。

2 个答案:

答案 0 :(得分:1)

回答Python 3.6.3:

作为per documentation

  

使用subprocess方法运行.run模块。如此:

     

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None)

     

运行args描述的命令。等待命令完成,然后   返回CompletedProcess个实例。

这个答案适用于运行Python 2.7的人:

您可以使用'subprocess'模块和.check_call方法。

根据the documentation

  

subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

     

使用参数运行命令。等待命令完成。如果   返回代码为零然后返回,否则提高   CalledProcessErrorCalledProcessError对象将具有   返回returncode属性中的代码。

正如Raf在评论中提到的那样:

如果您不关心捕获错误,可以改为运行.call方法。

  

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

     

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

答案 1 :(得分:-1)

只需更改您的代码,如下所示: -

for i in range (START,STOP+1,STEP):
    os.system("Ctemp.cmd")

最好始终使用cmd文件的完整路径。如果您仍有问题,请将Ctemp.cmd文件更改为Ctemp.bat,以解决您的问题。