在Python中执行子进程而不打开命令提示符

9 投票
2 回答
17530 浏览
提问于 2025-04-16 19:47

可能重复的问题:
在pythonw中使用Popen运行进程而不显示控制台
如何在Python (2.7)中消除生成进程的Windows控制台?

我有一个Python程序,它会多次调用一个单独的计算程序(这个程序是用C写的),这个调用是通过subprocess.check_call来实现的。在Linux上运行得很好,在Windows上也没问题,除了一个小问题:每次调用这个子进程时,都会弹出一个命令提示符窗口,然后在子进程结束后很快消失。

这对计算没有影响,但非常烦人,因为这个窗口不停地闪烁,让我在电脑上做其他事情时很困难,因为新的命令提示符窗口会抢走键盘的焦点。

我该如何简单地执行这个没有图形界面的子进程,并且防止命令提示符窗口的出现呢?

2 个回答

2

在你构建C应用程序的时候,把它的类型设置为Win32子系统,而不是控制台子系统。如果这是一个已经构建好的应用程序,你可以使用这个工具来更改子系统。

3

你是怎么调用 subprocess.check_call() 的?如果你传入 shell=True,那么窗口就不应该被创建,因为这会让 STARTUPINFO.wShowWindow 的属性设置为 SW_HIDE,也就是隐藏窗口。

举个例子:

subprocess.check_call(["ping", "google.com"], shell=True)

撰写回答