Windows下Python调用fastboot输出无法捕获问题求助
解决Windows下Python捕获fastboot输出的问题
核心原因
fastboot命令的输出默认会写入标准错误流(stderr),而非标准输出流(stdout),这就是你之前捕获stdout得到空值的原因。
解决方案1:同时捕获stderr
修改代码,将stderr也重定向到PIPE,从stderr变量中提取内容:
import subprocess deviceId = "你的设备ID" output = subprocess.Popen( f"fastboot -s {deviceId} getvar slot-count", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True ) stdout, stderr = output.communicate(timeout=600) # 从stderr中获取实际输出 print("捕获到的输出:", stderr.strip())
解决方案2:不使用shell=True(更推荐)
避免shell解析带来的潜在问题,将命令拆分为列表形式传入,同时把stderr重定向到stdout统一捕获:
import subprocess deviceId = "你的设备ID" cmd = ["fastboot", "-s", deviceId, "getvar", "slot-count"] output = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True ) stdout, _ = output.communicate(timeout=600) print("捕获到的输出:", stdout.strip())
额外处理:提取具体数值
如果需要从输出中提取slot-count的具体数值,可通过字符串处理实现:
# 假设输出格式为"slot-count: 2" slot_count = stdout.strip().split(":")[-1].strip() print("插槽数量:", slot_count)
内容的提问来源于stack exchange,提问作者ABHISHEK SINHA
相关产品推荐
相关产品推荐

