运行一个可执行文件,等待它产生输出,运行另一个程序

PHi*_*HiL 4 python executable subprocess popen

在 Python 脚本中,我尝试执行以下事件序列:

  1. 打开命令窗口并运行程序。完成后,它会输出一个文本文件。
  2. 创建该文本文件后,关闭程序。
  3. 之后,使用文本文件作为输入运行一个新程序

这是我到目前为止所拥有的:

subprocess.popen(['cmd','/c',r'programThatRuns.exe'])
subprocess.wait()  # ? subprocess.check_call()? kill?
subprocess.popen(['cmd','/c',r'otherProgramThatRuns.exe'])
Run Code Online (Sandbox Code Playgroud)

所以我想我真的被困在第二行了

Dun*_*can 7

我想你所需要的只是:

subprocess.check_call(['programThatRuns.exe'])
subprocess.check_call(['otherProgramThatRuns.exe'])
Run Code Online (Sandbox Code Playgroud)

check_call函数将运行程序并等待其完成。如果失败(非 0 退出代码),它将抛出异常CalledProcessError

您通常不想通过 运行程序cmd,只需直接运行它们即可。仅当程序不是可执行文件时才需要强制使用 cmd,例如对于诸如dir.bat.cmd文件之类的内置命令,或者如果您想使用文件关联。