如何隐藏subprocess.run生成的终端?
我把我的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)