python - 如何不并行运行批处理文件和python?
问题描述
我有以下脚本
1)
os.chdir("C:\\RTM3Run_Full\\Python Codes")
os.startfile("2015_RUNcvm_64_Crash.bat")
2)
for i in range(settings.loop):
....
我想在批处理文件完全完成后开始“for i in range(settings.loop):”部分(即第 2 部分)。但它只并行运行第 1 部分)和第 2 部分)。我知道我应该能够设置一个暂停功能来等待。但我不知道第 1 部分需要多长时间。任何人都知道还有其他更聪明的方法可以依次运行 1) 和 2) 吗?
非常感谢。
解决方案
os.startfile
模拟资源管理器中的单击。这意味着您的批处理文件将在后台运行。
替换这个:
os.chdir("C:\\RTM3Run_Full\\Python Codes")
os.startfile("2015_RUNcvm_64_Crash.bat")
通过适当的阻塞子进程调用,并且由于它是一个批处理文件,并且您希望避免使用, 作为参数列表的shell=True
前缀。cmd /c
也不要chdir
,只需使用当前工作目录参数,因此当前目录不会更改:
rc = subprocess.call(["cmd","/c","2015_RUNcvm_64_Crash.bat"],cwd=r"C:\RTM3Run_Full\Python Codes")
您可能需要检查返回代码,或者check_call
如果批处理文件返回非零退出代码,则使用异常停止。