Python子进程命令以静默方式运行,防止命令提示符窗口出现。
Python子进程命令以静默方式运行,防止命令提示符窗口出现。
我有一些使用Python3 GUI代码编写的复杂代码,使用tinker进行编译,用cx_Freeze编译。
这个问题只在Windows上运行时发生。
子进程check_ouptut(或Popen)运行一个类似的命令:
import subprocess VAL = subprocess.check_output(['adb.exe', 'version'], shell=False, stdout=subprocess.PIPE).decode()
所以我需要捕获输出并将其存储为VAL。然而,当它发生时,cmd窗口会弹出,并在读取值后关闭。我有一组相似的命令,它们会导致adb.exe在cmd窗口中弹出,这真的很烦人。
有没有办法使它们静默,以便cmd不会弹出?
正如我之前提到的,这段代码是作为GUI/tkinter运行的,使用cx_Freeze进行编译,只在Microsoft Windows上发生(在Linux上不会发生)。
谢谢。
问题:Python subprocess命令以静默方式运行,防止cmd窗口出现。
原因:在使用Python的subprocess模块执行命令时,有些命令会在cmd窗口中显示执行的过程和结果。但是,有时候我们希望在后台静默执行命令,不希望cmd窗口弹出来。
解决方法:使用subprocess模块的STARTUPINFO类来控制命令的执行方式,从而实现静默执行。具体步骤如下:
1. 导入subprocess和os模块:
import subprocess, os
2. 创建startupinfo对象:
startupinfo = None
3. 判断操作系统类型:
if os.platform == 'win32':
4. 如果是Windows系统,则设置startupinfo的dwFlags属性为subprocess.STARTF_USESHOWWINDOW:
startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
5. 使用subprocess模块的check_output函数执行命令,并指定shell=False,startupinfo=startupinfo:
VAL = subprocess.check_output(['adb.exe', 'version'], shell=False, startupinfo=startupinfo).decode()
通过以上步骤,就可以在Python中以静默方式运行命令,并防止cmd窗口的出现。