我编写了一个简短的Python 3脚本来多次运行批处理文件(Ctemp.cmd
)。脚本是这样的:
for i in range (START,STOP+1,STEP):
os.startfile('Ctemp.cmd')
上面的代码(几乎)同时运行文件。但是,我希望它等待,直到批处理文件已经完成运行,然后再次运行它。
答案 0 :(得分:1)
回答Python 3.6.3:
使用
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
方法。
subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
使用参数运行命令。等待命令完成。如果 返回代码为零然后返回,否则提高
CalledProcessError
。CalledProcessError
对象将具有 返回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
,以解决您的问题。