首页 > 解决方案 > 如何不并行运行批处理文件和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) 吗?

非常感谢。

标签: pythonbatch-filesequence

解决方案


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如果批处理文件返回非零退出代码,则使用异常停止。


推荐阅读