Python和Android Fastboot的输出



我正在创建一个python脚本来处理一些快速启动命令,我正在尝试执行

fastboot getvar product

为了看看我选择了什么产品。问题是当我运行这个代码时:

p = subprocess.Popen(['fastboot', "getvar", "all"])
out, err = p.communicate()
print "We got: " + out

Out为空。如果我传入设备而不是getvar-all,效果会很好。

我认为这与这个堆栈溢出问题有关,但我很难将其翻译成python:

从批处理文件快速启动getvar

如何将getvar的输出返回到字符串中,而不仅仅是输出到终端?

编辑:

我找到了一个github帐户,他为adb制作了一个类似的功能,并对其进行了修改以实现我想要的:

def callFastboot(self, command):
    command_result = ''
    command_text = 'fastboot %s' % command
    results = os.popen(command_text, "r")
    while 1:
        line = results.readline()
        if not line: break
        command_result += line
    return command_result
out = test.callFastboot("getvar product 2>&1")
print "We got: " + out

问题是这使用了旧的os.popen方法。所以我的新问题是一样的,但我如何对子流程做到这一点?

对于fastboot getvar all,您需要捕获stderr而不是stdout:

print subprocess.check_output(['fastboot', 'getvar', 'all'], stderr=subprocess.STDOUT)

相关内容

  • 没有找到相关文章

最新更新