2016-05-16 7 views
-1

Ich habe bereits eine Android-Emulator-Instanz im Hintergrund geöffnet. Ich möchte ein Python-Skript schreiben, das das Unterprozessmodul verwenden kann, um das Logcat für ein bestimmtes Wort zu durchsuchen, und das neueste Ergebnis (basierend auf dem Zeitstempel) aus dieser Suche als Zeichenfolge zurückgibt. Wie macht man das?Wie erhalte ich das letzte Ergebnis einer adb logischen grep Suche von Python?

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

Python-Skript möchten, dass die Zeile "00.00.03 Stichwort"

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

Haben Sie versucht, die [re] (https://docs.python.org/2/library/re.html) Modul? Es gibt auch ein "[Regular Expressions HOWTO] (https://docs.python.org/2/howto/regex.html)" auf der offiziellen Python-Seite, das Sie vielleicht hilfreich finden. –

Antwort

0

Um die letzte Zeile von subprocess' stdout erhalten wird zurückkehren:

#!/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 

Siehe adb logcat options.

Wenn Sie die 'adb logcat | grep keyword' Shell-Befehl wörtlich emulieren wollen, sehen How do I use subprocess.Popen to connect multiple processes by pipes?

Verwandte Themen