在Python脚本中,我正在尝试执行以下事件序列:
这是我到目前为止所拥有的:
subprocess.popen(['cmd','/c',r'programThatRuns.exe'])
subprocess.wait() # ? subprocess.check_call()? kill?
subprocess.popen(['cmd','/c',r'otherProgramThatRuns.exe'])
所以我猜我真的被困在第二行
答案 0 :(得分:3)
我认为你所需要的只是:
subprocess.check_call(['programThatRuns.exe'])
subprocess.check_call(['otherProgramThatRuns.exe'])
check_call
函数将运行程序并等待它完成。如果失败(非0退出代码),则会抛出CalledProcessError
异常。
您通常不希望通过cmd
运行程序,只需直接运行它们即可。如果程序不是可执行文件,您只需要强制使用cmd,例如对于dir
之类的内置命令,.bat
或.cmd
文件,或者如果要使用文件关联。
答案 1 :(得分:1)
您是否尝试过使用subprocess.call
?
运行args描述的命令。等待命令完成,然后返回returncode属性。
似乎是你正在尝试做的事情。只需运行第一个进程,检查文件是否存在,然后将文件传递给第二个进程即可使用。
subprocess.check_call
也适用于您尝试执行的操作,但如果该流程返回非零返回代码,则会引发异常,call
只会返回返回码。
答案 2 :(得分:0)
你必须在子进程上应用'wait',即
o = subprocess.popen(['cmd','/c',r'programThatRuns.exe'])
o.wait()
subprocess.popen(['cmd','/c',r'otherProgramThatRuns.exe'])
或您使用check_call