Вывод из Python и Android Fastboot
Я создаю скрипт Python для работы с некоторыми командами fastboot, и я пытаюсь сделать
fastboot getvar product
Для того, чтобы увидеть, какой продукт я выбрал. Проблема в том, когда я запускаю этот код:
p = subprocess.Popen(['fastboot', "getvar", "all"])
out, err = p.communicate()
print "We got: " + out
Выход пуст. Это работает нормально, если я передаю устройства вместо getvar all.
Я думаю, что это как-то связано с этим вопросом переполнения стека, но мне трудно перевести его на python:
fastboot 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. Мой новый вопрос такой же, но как мне это сделать с подпроцессом?
1 ответ
За fastboot getvar all
вам нужно захватить stderr
вместо stdout
:
print subprocess.check_output(['fastboot', 'getvar', 'all'], stderr=subprocess.STDOUT)