我是 python 新手,需要一些帮助。我正在编写一个 python 脚本来调用应用程序 exe(比如 abc.exe)。为此,我正在使用 subprocess.popen。例如:
r_stdout = subprocess.Popen(CommandLine,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE).communicate()[1]
CommandLine
这是:abc.exe -options "<optionstr>"
. abc.exe 对我来说是一个黑盒子,它会为我传递的某些选项生成错误提示。错误提示是标准的 Windows 提示,说 abc.exe 已停止工作,给了我 3 个选项来在线检查解决方案、关闭程序、调试程序。
现在我的问题是:有什么办法可以避免这个命令提示符吗?即有没有办法让 python 脚本抑制这个提示?
This site似乎有解决办法。基本上,它说在脚本的开头包含它:
if sys.platform.startswith("win"):
# Don't display the Windows GPF dialog if the invoked program dies.
# See comp.os.ms-windows.programmer.win32
# How to suppress crash notification dialog?, Jan 14,2004 -
# Raymond Chen's response [1]
import ctypes
SEM_NOGPFAULTERRORBOX = 0x0002 # From MSDN
ctypes.windll.kernel32.SetErrorMode(SEM_NOGPFAULTERRORBOX);
CREATE_NO_WINDOW = 0x08000000 # From Windows API
subprocess_flags = CREATE_NO_WINDOW
else:
subprocess_flags = 0
在此之后,您将像这样执行您的子流程:
r_stdout = subprocess.Popen(CommandLine,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
creationflags=subprocess_flags).communicate()[1]
MSDN 站点有一个 page它定义了许多类型的创建标志。希望这会有所帮助。