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

2024-06-23 03:43:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

以下是我目前所掌握的情况:

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

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


Tags: 命令程序脚本cmdcheck事件情况序列
3条回答

你试过使用subprocess.call吗?在

Python 2-Python 3

Run the command described by args. Wait for command to complete, then return the returncode attribute.

似乎是你想做的。只需运行第一个进程,检查文件是否存在,然后将文件传递给第二个进程使用。在

subprocess.check_call也适用于您正在尝试的操作,只是如果进程返回非零返回代码,它将引发异常,call将简单地返回返回代码。在

我想你只需要:

subprocess.check_call(['programThatRuns.exe'])
subprocess.check_call(['otherProgramThatRuns.exe'])

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

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

您必须在子进程上应用“wait”,即

o = subprocess.popen(['cmd','/c',r'programThatRuns.exe'])
o.wait()  
subprocess.popen(['cmd','/c',r'otherProgramThatRuns.exe'])

或者使用check_call

相关问题 更多 >

    热门问题