【发布时间】:2017-02-04 16:40:39
【问题描述】:
我有一个应用程序在我给它某个输入时崩溃。在命令行提示符下,我可以看到“访问冲突”消息等。 并且程序在处理输入时不会终止(一种没有结束的循环)。要杀死它,我需要按 Ctrl+C。
我的问题是:如何以编程方式跳过该崩溃?
我的意思是:我的目标是将该输入提供给该程序,如果它崩溃了,我 想要存储输入,如果它没有崩溃,那么我将删除 输入并继续下一个输入?
我的代码是:
import subprocess
program_to_call = "C:\\Program Files\\Software\\application.exe"
arg = "-s"
file = "C:\\Users\\test\\Desktop\\Project\\templates\\file1"
subprocess.Popen([program_to_call, arg, file], shell=True) # <---after this line, it does not go to next line
... code for removing etc.
由于我正在学习 Python,我希望在您的回答中看到一些有用的 Python 库的建议、概念或提示,以解决我的问题。您不需要编写代码 sn-ps。
注意:我使用的是 Windows 7(x86),安装的 python 版本是 2.7.1。
【问题讨论】:
-
你可以试试
subprocess.call([program_to_call, arg, file]),因为 Popen 需要等待终止。 -
是的,但我还想捕获错误消息以决定它是否崩溃。因此,我使用了 code = subprocess.check_output(...) 但它挂了。
-
错误信息可能会写入标准输出。尝试使用参数
stderr=sys.stdout调用subprocess.check_output是否有效。 -
@L3viathan:是的,我可以在命令提示符下看到错误代码。