Вывод из 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)
Другие вопросы по тегам