在Python中运行子进程命令时如何隐藏cmd窗口
我有一些复杂的Python3图形界面代码,使用了tinker,并且用cx_Freeze进行了编译。
这个问题只在Windows上出现。
subprocess check_output(或者Popen)运行了一个类似的命令:
import subprocess
VAL = subprocess.check_output(['adb.exe', 'version'], shell=False, stdout=subprocess.PIPE).decode()
所以我需要捕获输出并把它存储为VAL。但是,当这个情况发生时,命令提示符窗口会弹出来,并在读取到值后关闭。我有一组命令做类似的事情,结果是adb.exe会在命令提示符窗口中弹出,这真的很烦人。
有没有办法让这些操作静默进行,也就是说命令提示符窗口不弹出来?
正如我提到的,这段代码是作为图形界面/tkinter运行的,使用cx_Freeze编译,并且只在微软Windows上出现(在Linux上不会发生)。
谢谢。
1 个回答
4
我的解决方案是:
import subprocess,os
startupinfo = None
if os.platform == 'win32':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
VAL = subprocess.check_output(['adb.exe', 'version'], shell=False, startupinfo=startupinfo).decode()