可执行文件失败时从 subprocess.Popen() 捕获错误

任何人都可以对以下脚本进行一些改进,以便如果 Application.exe 文件失败,脚本会结束而不是无限期地挂起?


application = r'.\Application.exe'

input_params = '-i Input_1 -j Input_2


process = (application,input_params)

p = subprocess.Popen(" ".join(process),shell= True, stderr=subprocess.STDOUT, stdout = subprocess.PIPE)

p.communicate()

当应用程序文件失败时没有抛出异常,是否有可能让子进程在这样的事件中抛出一个?


编辑:实现了 p.returncode 语句。


修改我原来的问题,当 Application.exe 程序失败时,它会显示以下窗口

http://img3.mukewang.com/61b1d9cd000138df03660209.jpg

只有在我关闭此窗口后,程序才会继续(例如:p.returncode 将返回值 255)。

有没有办法不显示此窗口或自动关闭此窗口,或者尽管显示此窗口,程序仍继续运行?

问候


开满天机
浏览 524回答 1
1回答

慕姐4208626

如何从 Python subprocess.check_output() 捕获异常输出?try:    subprocess.check_output(...)except subprocess.CalledProcessError as e:    print e.outputfrom subprocess import Popen, PIPEp = Popen(['bitcoin', 'sendtoaddress', ..], stdout=PIPE, stderr=PIPE)output, error = p.communicate()if p.returncode != 0:    print("bitcoin failed %d %s %s" % (p.returncode, output, error))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python