You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python subprocess获取adb命令的控制台输出并存储

解决subprocess获取命令输出的问题

你得到0是因为subprocess.call()返回的是命令的退出状态码,0代表命令执行成功,并不是命令输出到控制台的内容。要获取命令的实际输出,需要用专门捕获输出的方法:

方法1:使用subprocess.check_output()

这个方法会直接返回命令的输出内容,适合只关心成功输出的场景:

import subprocess

while True:
    cmd = input("> ")
    try:
        # text=True 让输出直接是字符串,strip() 去掉多余的换行和空格
        output = subprocess.check_output(cmd, shell=True, text=True).strip()
        print("命令输出:", output)
    except subprocess.CalledProcessError as e:
        # 命令执行失败时(退出码非0)会触发这个异常
        print(f"命令执行失败,退出码: {e.returncode}")

方法2:使用subprocess.run()(推荐,Python3.5+)

这个方法更灵活,能同时获取输出、错误信息和退出码,不需要强制捕获异常:

import subprocess

while True:
    cmd = input("> ")
    # capture_output=True 捕获标准输出和错误,text=True 返回字符串格式
    result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
    # 提取输出内容并去除首尾空白
    output_content = result.stdout.strip()
    # 提取错误信息
    error_content = result.stderr.strip()
    
    print("命令输出:", output_content)
    if error_content:
        print("错误信息:", error_content)
    print("退出码:", result.returncode)

当你执行adb shell settings get system volume_music_speaker时,就能拿到返回的音量数值(比如14)并存储到变量里了。

内容的提问来源于stack exchange,提问作者Benioriginalul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 01:27:07