Python子进程命令以静默方式运行,防止命令提示符窗口出现。

13 浏览
0 Comments

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上不会发生)。

谢谢。

0
0 Comments

问题: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窗口的出现。

0