如何通过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
相关产品推荐
相关产品推荐

