如何在Windows系统中使用Python隐藏os.system执行的输出内容
Windows下隐藏os.system启动程序时的无关输出
方法1:直接修改os.system调用(快速适配现有代码)
Windows系统下可以在命令末尾添加输出重定向规则,将标准输出、标准错误都重定向到空设备nul,即可屏蔽所有打印内容:
os.system(r'"C:\Users\john\Desktop\chrome.exe" >nul 2>&1')
注意:路径外侧额外加双引号是兼容路径中存在空格的情况,无空格也可正常使用。
方法2:使用subprocess模块(更推荐的实现方式)
os.system属于比较老旧的进程调用接口,更推荐用官方推荐的subprocess模块,可直接通过参数配置屏蔽输出,兼容性更好:
import subprocess subprocess.run( r"C:\Users\john\Desktop\chrome.exe", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, check=False )
参数说明:
stdout=subprocess.DEVNULL:丢弃子进程的标准输出内容stderr=subprocess.DEVNULL:丢弃子进程的标准错误内容check=False:避免子进程返回非0状态码时Python抛出异常,符合Chrome这类桌面程序的启动场景
原理说明
你看到的无关提示大多是Chrome启动时输出的警告、调试类信息,默认会打印到标准错误流,os.system会默认继承父进程的输出流把这些内容打印到控制台,两种方案本质都是拦截子进程的输出内容不打印到当前终端。
内容的提问来源于stack exchange,提问作者Dkns
相关产品推荐
相关产品推荐

