2016-05-16 9 views
-1

У меня уже есть экземпляр эмулятора Android, открытый в фоновом режиме. Я хочу написать скрипт python, который может использовать модуль subprocess для grep logcat для определенного слова и вернуть последний (основанный на timestamp) результат этого поиска в виде строки. Как это сделать?Как получить последний результат из adb логического поиска grep с python?

adb logcat | grep keyword 
>> 00:00:01 keyword 
>> 00:00:02 keyword 
>> 00:00:03 keyword 

хотите питон скрипт, который будет возвращать строку "00:00:03 ключевое слово"

proc = subprocess.Popen(['adb', 'logcat', '| grep keyword'], stdout=subprocess.PIPE) 
    last_result=read_last_result(proc) 
+0

Вы пробовали [ре] (https://docs.python.org/2/library/re.html) модуль? Существует также «[Регулярные выражения HOWTO] (https://docs.python.org/2/howto/regex.html)» на официальном сайте Python, который может оказаться полезным. –

ответ

0

Чтобы получить последнюю строку из подпроцесса стандартный вывод:

#!/usr/bin/env python3 
from collections import deque 
from subprocess import Popen, PIPE 

with Popen('adb -d logcat <filter-spec>'.split(), stdout=PIPE) as adb: 
    last_line = deque(adb.stdout, maxlen=1).pop() # get last line 

См adb logcat options.

Если вы хотите эмулировать оболочки команду 'adb logcat | grep keyword' буквально, см How do I use subprocess.Popen to connect multiple processes by pipes?