我正在创建一个 python 脚本来处理一些快速启动命令,我正在尝试做
fastboot getvar product
为了看看我选择了什么产品。问题是当我运行此代码时:
p = subprocess.Popen(['fastboot', "getvar", "all"])
out, err = p.communicate()
print "We got: " + out
出来是空的。如果我传入设备而不是 getvar all,它工作正常。
我认为这与这个堆栈溢出问题有关,但我很难将它翻译成 python:
如何将 getvar 的输出以字符串形式返回,而不是仅输出到终端?
编辑:
我找到了一个为 adb 做了类似功能的人的 github 帐户,并对其进行了修改以实现我想要的:
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 方法。所以我的新问题是一样的,但我如何用子流程做到这一点?