如何隐藏subprocess.run生成的终端?

0 投票
1 回答
31 浏览
提问于 2025-04-14 17:50

我把我的Python应用程序用pyinstaller打包成了一个独立的可执行文件,每次调用subprocess.run的时候,都会弹出一个终端窗口,然后在命令执行完后又消失。这种情况在短时间内弹出很多终端窗口时,真的很让人分心。我该怎么做才能不让这些终端窗口显示出来呢?

示例

script.py

import subprocess
command = ["powershell", "-Command", "Get-ChildItem"]
subprocess.run(command)
PS> pyinstaller script.py

双击dist\script\script.exe

1 个回答

1

subprocess.run 是一个用来启动新进程的工具,它会创建一个叫 Popen 的东西,并把一些参数传给它。这里提到的 startupinfo 是一个特殊的参数,它里面有一些选项,可以用来控制是否显示终端窗口。如果你在 startupinfo 里设置了这些选项,就可以成功地隐藏这些窗口。

import subprocess 
hide_window = subprocess.STARTUPINFO()
hide_window.dwFlags |= subprocess.STARTF_USESHOWWINDOW
hide_window.wShowWindow = subprocess.SW_HIDE

command = [ ... ]

subprocess.run(command, startupinfo=hide_window)

撰写回答