我写了一些声明如下:
os.system(cmd) #do something subprocess.call('taskkill /F /IM exename.exe')
字符串都会弹出一个控制台。我怎样才能阻止它弹出控制台?
hsvhsicv1#
进程STARTUPINFO可以隐藏控制台窗口:
STARTUPINFO
si = subprocess.STARTUPINFO() si.dwFlags |= subprocess.STARTF_USESHOWWINDOW #si.wShowWindow = subprocess.SW_HIDE # default subprocess.call('taskkill /F /IM exename.exe', startupinfo=si)
字符串或者设置creation flags以禁止创建窗口:
CREATE_NO_WINDOW = 0x08000000 subprocess.call('taskkill /F /IM exename.exe', creationflags=CREATE_NO_WINDOW)
型上面的仍然是一个控制台进程,具有有效的控制台I/O句柄(通过在GetStdHandle返回的句柄上调用GetFileType来验证)。它没有窗口,也没有继承父进程的控制台(如果有的话)。您可以更进一步,强制孩子根本没有控制台:
GetStdHandle
GetFileType
DETACHED_PROCESS = 0x00000008 subprocess.call('taskkill /F /IM exename.exe', creationflags=DETACHED_PROCESS)
型在这种情况下,子进程的标准句柄(即GetStdHandle)为0,但您可以将它们设置为打开的磁盘文件或管道,如subprocess.DEVNULL(3.3)或subprocess.PIPE。
subprocess.DEVNULL
subprocess.PIPE
pod7payv2#
将shell=True参数添加到子进程调用中。
shell=True
subprocess.call('taskkill /F /IM exename.exe', shell=True)
字符串或者,如果您不需要等待它,请使用subprocess.Popen而不是subprocess.call。
subprocess.Popen
subprocess.call
subprocess.Popen('taskkill /F /IM exename.exe', shell=True)
型
yquaqz183#
只需添加:subprocess.call('powershell.exe taskkill /F /IM exename.exe', shell=True)
subprocess.call('powershell.exe taskkill /F /IM exename.exe', shell=True)
tjrkku2a4#
试试subprocess.Popen(["function","option1","option2"],shell=False)。
subprocess.Popen(["function","option1","option2"],shell=False)
ux6nzvsh5#
尝试将扩展名从.py更改为.pyw它基本上只是一个Python用户界面文件。所以它打开了一个没有命令行的新窗口。检查这个链接(filext.com/file-extension/PYW)
5条答案
按热度按时间hsvhsicv1#
进程
STARTUPINFO
可以隐藏控制台窗口:字符串
或者设置creation flags以禁止创建窗口:
型
上面的仍然是一个控制台进程,具有有效的控制台I/O句柄(通过在
GetStdHandle
返回的句柄上调用GetFileType
来验证)。它没有窗口,也没有继承父进程的控制台(如果有的话)。您可以更进一步,强制孩子根本没有控制台:
型
在这种情况下,子进程的标准句柄(即
GetStdHandle
)为0,但您可以将它们设置为打开的磁盘文件或管道,如subprocess.DEVNULL
(3.3)或subprocess.PIPE
。pod7payv2#
将
shell=True
参数添加到子进程调用中。字符串
或者,如果您不需要等待它,请使用
subprocess.Popen
而不是subprocess.call
。型
yquaqz183#
只需添加:
subprocess.call('powershell.exe taskkill /F /IM exename.exe', shell=True)
tjrkku2a4#
试试
subprocess.Popen(["function","option1","option2"],shell=False)
。ux6nzvsh5#
尝试将扩展名从.py更改为.pyw
它基本上只是一个Python用户界面文件。所以它打开了一个没有命令行的新窗口。检查这个链接(filext.com/file-extension/PYW)