我正在尝试创建一个启动新窗口并等待它完成的python脚本,然后检索退出代码。所以我使用Popen与start /wait
为它创建一个单独的窗口,但这不能正确转发退出代码。
此代码总结了问题:
import subprocess
params = {}
params['stdout'] = subprocess.PIPE
params['stderr'] = subprocess.PIPE
params['shell'] = True
proc = subprocess.Popen('start /wait cmd /c exit 1', **params)
# This works but the above line does not
#proc = subprocess.Popen('exit 1', **params)
resultCode = proc.wait()
print(resultCode)
start /wait
的文档表明它应该返回退出代码,当我手动运行它然后检查%ERRORLEVEL%
它看起来是正确的,所以我不确定我做错了什么
答案 0 :(得分:0)
使用
proc = subprocess.Popen('call cmd /c exit 1', **params)
而不是start /wait
代替resultCode
中的错误代码1。
根据这个问题和答案的逻辑:CALL command vs. START with /WAIT option
我的猜测是差异在于start /wait
不会在相同的环境中共享变量而call
会这样做。