如何调用os.system()类函数仅获取返回值,避免自动打印输出?
解决方法
针对你遇到的问题——调用无法修改的函数(如os.system())时,只想保存返回值而抑制其自动打印输出,有以下两种可行方案:
1. 用subprocess模块替代os.system()
os.system()的功能可以被更灵活的subprocess模块替代,它能完全控制命令的输出流向:
import subprocess # 执行命令并抑制输出,仅获取返回码 result = subprocess.run("你的系统命令", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) return_code = result.returncode # 这就是原os.system()返回的退出码
如果需要捕获命令的输出内容,也可以通过result.stdout.decode()或result.stderr.decode()获取,全程不会自动打印到终端。
2. 重定向命令输出到空设备(仅适用于os.system())
如果你必须使用os.system(),可以在执行的命令末尾添加输出重定向,把标准输出和错误输出都导向空设备:
- Linux/macOS系统:
import os # 重定向stdout和stderr到/dev/null,抑制打印 return_code = os.system("你的系统命令 > /dev/null 2>&1")
- Windows系统:
import os # 重定向到NUL设备 return_code = os.system("你的系统命令 > NUL 2>&1")
这样命令执行时的输出会被丢弃,只有返回码会被存入变量,不会自动打印。
内容的提问来源于stack exchange,提问作者Maksim Gonev
相关产品推荐
相关产品推荐

